设计模式的六大原则

来源:互联网 发布:知乎 旧版 安装包 编辑:程序博客网 时间:2024/06/06 00:03
单一职责原则
单一职责原则不只是面向对象编程思想所特有的,只要是模块化的程序设计,都适用单一职责原则。
        单一职责,就是字面的意思不要存在多于一个导致类变更的原因。就是一个类只负责一项职责。如果一个类负责两个功能,在修改时,难免会使另一个正常运行的功能发生故障风险。所以,每一个类,应该只负责一项功能。
遵循单一职责原的优点:
1.可以降低类的复杂度,一个类只负责一项职责,其逻辑肯定要比负责多项职责简单的多;
2.提高类的可读性,提高系统的可维护性;
3.变更引起的风险降低,变更是必然的,如果单一职责原则遵守的好,当修改一个功能时,可以显著降低对其他功能的影响。
一句话点评:高内聚低耦合的绝佳体现,不要乱拉关系,独善其身挺好。


里氏转换原则

        里氏替换原则的核心精神是:在使用基类的的地方可以任意使用其子类,能保证子类完美替换基类;在父类和子类的具体实现中,严格控制继承层次中的关系特征,以保证用子类替换基类时,程序行为不发生问题,且能正常进行下去。正是由于子类型的可替换性才使得使用父类型的模块在无需修改的情况下就可以扩展。

一句话点评:长辈给了你继承的权利就一定要做赡养的义务,把长辈的职责都要承担起来。


依赖倒置原则

    依赖倒转原则,指高层模块不应该依赖低层模块,两个都应该依赖抽象;抽象不应该依赖细节,细节应该依赖抽象。就是要依赖接口编程。

        抽象指的是接口或者抽象类,细节就是具体的实现类,相对于细节的多变性,抽象的东西要稳定的多。以抽象为基础搭建起来的架构比以细节为基础搭建起来的架构要稳定的多。
在实际编程中,我们一般需要做到如下3点:
1.低层模块尽量都要有抽象类或接口,或者两者都有。
2.变量的声明类型尽量是抽象类或接口。

3.使用继承时遵循里氏替换原则。

一句话点评:搞建筑时要做设计师,而不是砖瓦工,抽象的蓝图要靠具体的材料一点点实现。



迪米特法则

    一个对象应该对其他对象保持最少的了解。如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。如果其中一个类需要调用另一个类的某一个方法时,可以通过第三者转发这个调用。类之间的耦合越弱,就越有利于复用,一个处在弱耦合的类被修改,不会对有关系的类造成波及。主要是强调了类之间的松耦合。

一句话点评:不要和陌生人说话,若两国交战要尽量避免正面冲突,多派使者协商调度。



开放--封闭原则

开放--封闭原则,是说一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。

        在软件的生命周期内,会因为变化、升级和维护等原因需要对软件原有代码进行修改时,可能会给旧代码中引入错误,所以,当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化。

一句话点评:开放扩展,封闭更改,开合有度是一门艺术。


合成/聚合复用原则

    合成聚合复用原则,尽量使用合成/聚合,尽量不使用类继承。合成聚合是“has a”的关系,而继承是“is a”的关系。由于继承是一中强耦合的结构,父类变,子类必变。所以不是“is a”关系,我们一般不要用继承。优先使用合成聚合复用原则,有助于保持每个类的封装,降低继承的层次。

一句话点评:优生优育,不要盲目繁衍。


0 0
原创粉丝点击