Consider a super class(can be abstract) Animal
, inherited by multiple subclasses(Dog
/ Bird
). On their instantiation provide objects having their local state & behavior:
The strategy pattern
- defines a family of algorithms,
- encapsulates each algorithm, and
- makes the algorithms interchangeable within that family.
If a requirement demands to add a new algorithm(or behavior)(not state) in super class Animal
, then use Strategy pattern, with below changes:
where ItFyls
and CantFly
are algorithms encapsulating the new behavior(fly
) that are used by subclasses(Dog
/ Bird
) interchangeably, with below code changes
Association of type Composition, is helping to add/change behavior in super class by minimizing side effects in super/sub class relationship.
class Animal{
....
Flys flyinType;
....
}
Is strategy pattern suppose to be used to only add new behavior(or algorithm) in super class? but not state(data)
Aucun commentaire:
Enregistrer un commentaire