设计模式

2020-10-26  本文已影响0人  _一叶孤帆

设计模式

设计模式的本质是面向对象设计原则的实际运用,是对类的封装性、继承性和多态性以及类的关联关系和组合关系的充分理解。

六大原则

单一原则

单一职责原则要求一个接口或类只有一个原因引起变化,也就是说一个接口或一个类只有一个原则,它就只负责一件事。

There should never be more than one reason for a class to change

不使用单一原则可能存在哪些问题

单一原则的优点:

里氏替换原则

继承必须确保超类所拥有的性质在子类中仍然成立

Inheritance should ensure that any property proved about supertype objects also holds for subtype objects

里氏替换原则通俗来讲就是:子类可以扩展父类的功能,但不能改变父类原有的功能。也就是说:子类继承父类时,除添加新的方法完成新增功能外,尽量不要重写父类的方法。

里氏替换原则的优点:

实现方法:

依赖倒置原则

高层模块不应该依赖低层模块,两者都应该依赖其抽象;抽象不应该依赖细节,细节应该依赖抽象

High level modules shouldnot depend upon low level modules.Both should depend upon abstractions.Abstractions should not depend upon details. Details should depend upon abstractions

要面向接口编程,不要面向实现编程。

依赖倒置原则是实现开闭原则的重要途径之一,它降低了客户与实现模块之间的耦合。

依赖倒置原则的优点:

实现方法:

依赖倒置原则的目的是通过要面向接口的编程来降低类间的耦合性

接口隔离原则:

客户端不应该被迫依赖于它不使用的方法
Clients should not be forced to depend on methods they do not use

一个类对另一个类的依赖应该建立在最小的接口上
The dependency of one class to another one should depend on the smallest possible interface

接口隔离原则的优点:

接口隔离原则和单一原则的区别:

接口隔离原则和单一职责都是为了提高类的内聚性、降低它们之间的耦合性,体现了封装的思想,但两者是不同的:

实现方法:

迪米特法则

只与你的直接朋友交谈,不跟“陌生人”说话
Talk only to your immediate friends and not to strangers

如果两个软件实体无须直接通信,那么就不应当发生直接的相互调用,可以通过第三方转发该调用。其目的是降低类之间的耦合度,提高模块的相对独立性。

“朋友”是指:当前对象本身、当前对象的成员对象、当前对象所创建的对象、当前对象的方法参数等,这些对象同当前对象存在关联、聚合或组合关系,可以直接访问这些对象的方法。

迪米特法则的优点:

注意:过度使用迪米特法则会使系统产生大量的中介类,从而增加系统的复杂性,使模块之间的通信效率降低。所以,在釆用迪米特法则时需要反复权衡,确保高内聚和低耦合的同时,保证系统的结构清晰。

实现方法:

开闭原则

软件实体应当对扩展开放,对修改关闭
Software entities should be open for extension,but closed for modification

当应用的需求改变时,在不修改软件实体的源代码或者二进制代码的前提下,可以扩展模块的功能,使其满足新的需求。

开闭原则的优点:

实现方法:

抽象约束、封装变化

通过接口或者抽象类为软件实体定义一个相对稳定的抽象层,而将相同的可变因素封装在相同的具体实现类中。

参考资料:

http://c.biancheng.net/view/1327.html

上一篇 下一篇

猜你喜欢

热点阅读