Different Implementations of Software patterns.



  • A Software Pattern is meant to be a generic solution for a recurring problem. Then why does implementation of a pattern vary?

  • .Net/Java Event mechanism, MQ Series/MSMQ messaging, COM Bidirectional communication mechanism Event-Sink etc all are based on Observer pattern. What forces them to have different implementation?

  •  Is it not possible to create a generic implementation of a pattern that is configurable and fits to all contexts?

  • Can we consider patterns as complete solutions?
           No says
Pattern Oriented Software Architecture Volume 5: On Patterns and Pattern Languages

  • A pattern differs from a specific solution to a problem by a) Recursive nature of the problem b) Roles of components involved in a pattern are strictly defined. But the organization of components to perform the role differs based on context.
  •  The structural , behavioral and internal implementation variations of the pattern are influenced by
    o   Context in which it is applied.
    o Forces like a) Extensibility b) Testability c) Language agnostic nature of components d) Performance etc.
    o   Roles involved in patterns are universally applicable, but implementation of those roles by different components varies based on the real context.

  •  The main purpose of observer pattern is to provide a mechanism for change propagation.

  •  Important roles involved in observer pattern are a) Subject b) Observer.
    o   Subject   :- Notifies registered dependents.
    o  Observer: - Dependents on Subject State. Whenever state of subject changes , they should perform necessary actions.
  • Variations in observer pattern
o   A single object might be an Observer in one relationship and Subject in other.
o   A single subject may receive events from a single subject or from multiple subjects.
o   A subject may be observed by single observer or multiple observers.
o   Subject and Observers may be components in a distributed system separated physically.
                  o   Subject and Observers may be components in an Enterprise Integration Context.         
                      Subject needs to be unaware of its Observers and
                      Observers needs to be unaware of Subjects.

  •  Non functional requirements of the problem context like; performance etc might also control the behavior. Example: - State propagation mechanism might be push or pull. The data structures used might be influenced by the time complexity of operations that will be performed.



No comments:

Post a Comment