EXTERNAL POLYMORPHISM An Object Structural Pattern for Transparently Extending C++ Concrete Data Types Chris Cleeland chris@envision.com Douglas C. Schmidt and Timothy H. Harrison schmidt@cs.wustl.edu and harrison@cs.wustl.edu Department of Computer Science Washington University Campus Box 1045 One Brookings Drive St. Louis, Missouri 63130-4899 (TEL): (314) 935-7538 ABSTRACT This paper describes the External Polymorphism pattern, which allows classes that are not related by inheritance and/or have no virtual methods to be treated polymorphically. The pattern capitalizes on C++ language features combined with other basic patterns (e.g., Adapter and Decorator ) to give the appearance of polymorphic behavior on otherwise unrelated classes. This pattern has been used in a number of C++ frameworks such as ACE and the OSE class library.