设计模式经典话语总结收藏
1.单例模式 2.工厂方法模式 3.抽象工厂模式 4.模版方法模式 5.建造者模式 6.代理模式 7.原型模式 8.中介者模式
9.命令模式 10.责任链模式 11.装饰模式 12.策略模式 13.适配器模式 14.迭代器模式 15.组合模式 16.观察者模式
17.门面模式 18.备忘录模式 19.访问者模式 20.状态模式 21.解释器模式 22.享元模式 23.桥梁模式
////
计模式的起源是面向对象程序设计思想,是面向对象设计的精髓——抽象。面向对象通过类和对象来实现抽象,实现时产生了面向对象的三个重要机制:封装、继承、多态。
在学习设计模式时,一定要理解模式的适用性。必须做到使用一种模式是因为了解它的优点,不使用一种模式是因为了解它的弊端;而不是使用一种模式是因为不了解它的弊端,不使用一种模式是因为不了解它的优点。
///
(1)依赖(Dependency):关系是类与类之间的联接。表现形式:局部变量,方式的形参,或则静态方法的调用。
(2)关联(Association):类与类之间的联接,它使一个类知道另一个类的属性和方法。表现形式:成员变量实现。
两个类是平等层次。
(3)聚合(Aggregation):是关联关系的一种,是强的关联关系。聚合是整体和个体之间的关系。两个类不是平等。
一个代表整体,一个代表部分。
(4)组合(Compositioni):比聚合关系强的关系。它要求普通的聚合关系中代表整体对象的代码负责部分对象的生命周期。
组合关系是不能共享的。
设计模式六大原则:
(1)单一原则:一个类只负责一项职责。
注意:职责扩散到我们无法控制的程度之前,立刻对代码进行重构。
(2)里氏替换原则:所有引用基类的地方必须能透明 地使用其子类的对象。
注意:子类可以扩展父类的功能,但不能改变父类原有的功能。
子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法。
子类可以增加自己特有的方法。
当子类的方法重载父类的时,前置条件(即方法的形参)要比父类方法的输入参数更宽松。。
当子类的方法实现父类的抽象方法时,后置条件(返回条件)要比父类更严格。
(3)依赖倒置原则:高层模块不应该依赖底层模块,二则都应该依赖其抽象;
抽象不应该依赖细节;
细节应该依赖抽象;
依赖倒置原则的核心思想是面向接口编程
举例:
将类A修改为依赖接口I,类B和类C各自实现接口I,类A通过接口I间接与类B或者类C发生联系,则会大大降低修改类A的几率。
实现方式:第一种是接口传递;第二种:构造方法传递;第三种:setter方法传递
实际编程中:
低层模块尽量都要有抽象类或接口,或者两者都有。
变量的声明类型尽量是抽象类或接口。
使用继承时遵循里氏替换原则。
(4)接口隔离原则:客户端不应该依赖它不需要的接口;
一个类对另一个类的依赖应该建立在最小的接口上。
含义:建立单一接口,不要建立庞大臃肿的接口,尽量细化,接口方法尽量少。
注意:接口尽量小,但要有限度;
为依赖接口的类定制服务,只暴露给调用的类它需要的方法,它不需要的方法尽量隐藏起来,
只有专注地为一个模块定制服务,才能建立最小的依赖关系。
提高内聚,减少对外交互。使用接口设计过大或过小都不好。
(5)迪米特法则:一个对象应该对其他对象保持最小的了解。高内聚,低耦合。
又称为最少知道原则,只与直接的朋友通信。
耦合的方式:依赖、关联、组合、聚合等。
我们称出现成员变量、方法参数、方法返回值中的类为直接的朋友。
出现在局部变量中的类则不是直接的朋友。
通俗讲:一个类对自己依赖的类知道的越少越好。也就是说对被依赖的类来说,无论逻辑
多么复杂,都尽量地将逻辑封装在类的内部,对外处理提供的public方法,不要对外泄露任何信息。
(6)开闭原则:一个软件实体如类、模块和函数应该对扩展开发,对修改关闭。
当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是修改已有的代码来实现变化。
用抽象构建框架,用实现扩展细节。
总结:单一职责原则告诉我们实现类要职责单一;
里氏替换原则告诉我们不要破坏继承体系;
依赖倒置原则告诉我们要面向接口编程;
接口隔离原则告诉我们在设计接口的时候要精简单一;
迪米特法则告诉我们要降低耦合。
而开闭原则是总纲,他告诉我们要对扩展开放,对修改关闭。

浙公网安备 33010602011771号