1,设计模式的由来
基于面向对象思想(抽象,继承,封装,多态),不断对好的设计进行总结,最后形成理论体系.通俗的讲,设计模式就是解决问题的方式.
读<Head First设计模式> 中提到设计原则:
- 1 封装变化。
- 2 多用组合少用继承。 3 针对接口编程,不针对实现编程。
- 4为交互对象之间的松耦合设计而努力。
- 5类应该对扩展开放,对修改关闭。
- 6依赖抽象,不要依赖具体类。
- 7只和朋友交谈。
- 8别找我,我会找你。
- 9 类应该只有一个改变的理由。
2,如何学习设计模式
理解它的应用场景,解决了哪些问题,有什么好处,以及实现方式.
好的项目不是开始时就设计出来的,而是经过不断的修改完善而产生的.(这里并不代表开始就不用好好的设计)
3,分类
参考<<GOF>>一书
根据使用目的分类:创建型,结构型,行为型
创建型:主要重点在于对象的实例化过程
具体有:抽象工厂(Abstract factory),生成器(Builder),工厂方法(Factory method),原型(Prototype),单件(Singleton)
结构型:主要重点在于如何组合类之间的关系,构建强大的结构
具体有:适配器(Adapter),桥接(Bridge),组合(Composite),装饰(Decorator),外观(Facade),享元(FlyWeight),代理(Proxy)
行为型:主要在于类与类之间的行为通信
具体有:职责链(Chain of reSponsibility),命令(Command),解释器(Interpreter),迭代器(Iterator),中介者(Mediator),备忘录(Memento),观察者(Observer),状态(State),策略(Strategy),模板方法(Template method),访问者(Visitor)
随手附上一张书中的关系图
4总结
使用哪个设计模式没有绝对的.
补充:
关于复用
方式有三种:继承,组合,参数化类型(基本不用) 优先使用组合,使代码保持封装,更灵活,但是比较低效(因为有间接性)