设计模式的原则
来源:互联网 发布:美工设计经理岗位职责 编辑:程序博客网 时间:2024/04/30 00:45
5大原则
单一职责原则:一个类的责任不要太大太多。
里氏代换原则:在软件中将一个基类对象替换成它的子类对象,程序将不会产生任何错误和异常,反过来则不成立,如果一个软件实体使用的是一个子类对象的话,那么它不一定能够使用基类对象。
开放-封闭原则:对于扩展是开放的,对于更改是封闭的。修改原有类就说明类设计不够好。
依赖倒转原则:应该让程序都依赖抽象,而不是依赖具体。比如两个具体类互相耦合(互相调用)的设计就不够好,应该是耦合的双方都依赖于抽象而不是具体。有观察者模式。
每个类尽量继承自接口或抽象类。这就是依赖倒转的基本要求,有了抽象才可能依赖倒转。
类尽量避免从具体类派生,但也不是绝对的。
尽量不要覆盖基类的方法。如果基类是一个抽象类,而且这个方法已经实现,子类就尽量不要覆盖。类间依赖的是抽象,覆盖了抽象方法,对依赖的稳定性会产生一定的影响。
迪米特法则(最少知识原则):强调类之间应该松耦合。每个类尽量减少对其他类的依赖。
内聚性描述的是一个例程内部组成部分之间相互联系的紧密程度。
耦合性描述的是一个例程与其他例程之间的联系的紧密程度。软件开发的目标应该是创建这样的例程:内部完整,也就是高内聚,而与其他例程之间的联系则是小巧,直接,可见,灵活的,这就是松耦合。
有外观模式,中介模式。
六个创建型模式
创建型模式隐藏了这些类的实例是如何被创建和放在一起,整个系统关于这些对象所知道的是由抽象类所定义的接口。这样,创建型模式在创建了什么,谁创建它,它是怎么被创建的,以及何时创建这些方面提供了很大的灵活性。
简单工厂模式-Simple Factory Pattern【学习难度:★★☆☆☆,使用频率:★★★☆☆】
工厂方法模式-Factory Method Pattern【学习难度:★★☆☆☆,使用频率:★★★★★】
抽象工厂模式-Abstract Factory Pattern【学习难度:★★★★☆,使用频率:★★★★★】
单例模式-Singleton Pattern【学习难度:★☆☆☆☆,使用频率:★★★★☆】
原型模式-Prototype Pattern【学习难度:★★★☆☆,使用频率:★★★☆☆】
建造者模式-Builder Pattern【学习难度:★★★★☆,使用频率:★★☆☆☆】
七个结构型模式
所关注的是如何将对象进行组合以便获取功能更加庞大的结构。一般情况下结构型模式都是使用继承机制将接口进行组合以及实现。
适配器模式-Adapter Pattern【学习难度:★★☆☆☆,使用频率:★★★★☆】
桥接模式-Bridge Pattern【学习难度:★★★☆☆,使用频率:★★★☆☆】
组合模式-Composite Pattern【学习难度:★★★☆☆,使用频率:★★★★☆】
装饰模式-Decorator Pattern【学习难度:★★★☆☆,使用频率:★★★☆☆】
外观模式-Facade Pattern【学习难度:★☆☆☆☆,使用频率:★★★★★】
享元模式-Flyweight Pattern【学习难度:★★★★☆,使用频率:★☆☆☆☆】
代理模式-Proxy Pattern【学习难度:★★★☆☆,使用频率:★★★★☆】
十一个行为型模式
所关注的重点是算法和对象之间的职责是如何分配的。
职责链模式-Chain of Responsibility Pattern【学习难度:★★★☆☆,使用频率:★★☆☆☆】
命令模式-Command Pattern【学习难度:★★★☆☆,使用频率:★★★★☆】
解释器模式-Interpreter Pattern【学习难度:★★★★★,使用频率:★☆☆☆☆】
迭代器模式-Iterator Pattern【学习难度:★★★☆☆,使用频率:★★★★★】
中介者模式-Mediator Pattern【学习难度:★★★☆☆,使用频率:★★☆☆☆】
备忘录模式-Memento Pattern【学习难度:★★☆☆☆,使用频率:★★☆☆☆】
观察者模式-Observer Pattern【学习难度:★★★☆☆,使用频率:★★★★★】
状态模式-State Pattern【学习难度:★★★☆☆,使用频率:★★★☆☆】
策略模式-Strategy Pattern【学习难度:★☆☆☆☆,使用频率:★★★★☆】
模板方法模式-Template Method Pattern【学习难度:★★☆☆☆,使用频率:★★★☆☆】
访问者模式-Visitor Pattern【学习难度:★★★★☆,使用频率:★☆☆☆☆】
史上最全设计模式导学目录(完整版)
- 设计模式的原则
- 设计模式的原则
- 设计模式的原则
- 设计模式的原则
- 设计模式的原则
- 设计模式的原则
- 设计模式的原则
- 设计模式的原则
- 设计模式的原则
- 设计模式的原则
- 设计模式的原则
- 设计模式的原则
- 设计模式的原则
- 设计模式的原则
- 设计模式的原则
- 设计模式的原则
- 设计模式的原则
- 设计模式的原则
- C语言学习之结构体第一讲
- jsp判断是否存在List
- angular js表单验证
- AndroidStudio工程加入svn步骤
- windows下并发I/O服务器模型对比(二)
- 设计模式的原则
- Caffe 深度学习框架上手教程
- C#递归扫描文件夹中的文件
- UVALive 7345 J - The Hypnotic Spirals
- ListView的四层优化
- 判断Map返回结果是否为空
- 解决mysql"Access denied for user'root'@'IP地址'"问题
- 点击按钮自动复制到剪贴板的实现
- 史上最全的Linux系统 ISO下载