为什么设计模式能够有效地解决设计问题,它们又是如何设计出来的,该如何学习和使用这些模式呢?
1.设计模式的意图
设计模式最根本的意图就是适应需求变更。在软件开发中,变更是会频繁发生的,而这其中,需求变更是最常见、影响最大的一种。因为需求是整个软件系统的基础,软件系统就是为了满足需求而存在的。当需求发生变化时,后续的分析、设计、实现都会受到影响。为此,一个好的系统应该是能够快速应对需求变更,并能保持稳定的。而设计模式就是为了让软件更加适应变更,有更多的可扩展性,从而保证发生需求变更时不需要重新设计。
2.设计模式的实现思路
应对变更的直接手段就是封装变更,从而使变更的影响降到最小。其基本实现思路就是封装复杂性,并对外提供简单接口,通过多态包容的特性扩展新功能来应对变更。
多态包容是指宿主对象中包含抽象基类(或接口)的引用,而实际行为委托给该引用所指向的实际对象,从而使这些行为可以根据该引用所指向的实际对象不同而不同。具体的实现思路包括以下几个方面。
1)增加间接层
2)针对接口编程,而不针对实现编程
3)优先使用聚合,而不是继承