James O. Coplien
Lucient Technologies
Pattern: half-object + protocol (HOPP)
Pattern languages of program design
Designing software for ease of extension and contraction
ICSE '78 Proceedings of the 3rd international conference on Software engineering