设计模式的三大分类
1、创建型模式
创建对象
关注对象的创建过程
五种:单例模式、工厂模式、抽象工厂模式、建造者模式、原型模式。
2、结构型模式
是从程序的结构上实现松耦合,从而可以扩大整体的类结构,用来解决更大的问题
关注对象和类的组织
七种:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式
模式 | 说明 |
---|---|
适配模式 | 是原本由于接口不兼容不能一起工作的类可以一起工作 |
桥接模式 | 处理多层继承结构,处理多维度变化的场景,将各个维度设计成独立的继承结构,使各个维度可以独立的扩展在抽象层建立关联 |
装饰模式 | 动态地给一个对象添加额外的功能,比继承灵活 |
组合模式 | 将对象组合成树状结构以表示“部分和整体”层次结构,使得客户可以统一的调用叶子对象和容器对象 |
外观模式 | 为子系统提供统一的调用接口,使得子系统更加容易使用 |
享元模式 | 运用共享技术有效的实现管理大量细粒度对象,节省内存,提供效率 |
代理模式 | 为真实对象提供了一个代理,从而控制对真实对象的访问 |
3、行为型模式
关注的是系统中对象之间的相互交互,研究系统在运行时对象之间的相互通信和协作,进一步明确对象的职责
十一种:模板方法模式、命令模式、迭代器模式、观察者模式、终结者模式、备忘录模式、解释器模式、状态模式、策略模式、职责链模式、访问者模式。
设计模式的六大原则
1、单一职责原则
一个类只承担一个职责,不要让一个类承受的事情过多
一个类或者模块应该有且只有一个改变的原因
2、里氏替换原则
尽量把父类设计为抽象类或者接口,让子类继承父类或实现父接口。子类可以扩展父类的功能,但不能改变父类原有的功能
3、依赖倒转原则
DIP(Dependence Inversion Principle):要针对接口编程,不要针对实现编程
4、接口隔离原则
使用多个专门的接口比使用单一的总接口要好
一个类对另外一个类的依赖性应当是建立在最小的接口上的
一个接口代表一个角色,不应当将不同的角色都交给一个接口。没有关系的接口合并在一起,形成一个臃肿的大接口,这是对角色和接口的污染
5、迪米特法则(最少知识原则)
LoD(Law of Demeter):只与你直接的朋友通信,而避免和陌生人通信
或者说一个软件实体应当尽可能少的与其他实体发生相互作用
6、开闭原则
OCP(Open-Closed Principle):一个软件的实体应当对扩展开放,对修改关闭
学习设计模式的初衷是为了学习设计者的思维,是一种更高层次的思考,不是通过背代码的方式记住,要多去理解,思考。