面向对象设计原则
1. SOLID
(1)SRP(The Single Responsibility principle)单一责任原则
(2)OCP(The Open-Closed Principle)开放-封闭原则
(3)LSP(The Liskov Substitution Principle)Liskov替换原则
(4)ISP (The Interface Segregation Principle)接口聚合原则
(5)DIP(The Dependency Inversion Principle)依赖转置原则
2. 详细介绍:
(1)SRP(The Single Responsibility Principle)单一责任原则
Responsibility:a reason for change
SRP:
-不应有多于一个的原因使得一个类发生变化
-一个类,一个责任
如果一个类包含了多个责任,那么将引起不良后果
-引入额外的包,占据资源
-导致频繁的重新配置和部署
这是最简单的原则,却是最难做好的原则
违反SRP的案例:
(2)OCP(The Open-Closed Principle)开放-封闭原则
开放和封闭,指的是:
a. 对扩展性的开放:
模块的行为应是可扩展的,从而该模块可表现出新的行为以满足需求的变化
b. 对修改的封闭:
模块自身的代码是不应被修改的,扩展模块的一般途径是修改内部实现。
关键的解决方案:抽象技术,使用继承(inheritance)和组成(composition)
案例:
(3)LSP(The Liskov Substitution Principle)Liskov替换原则
LSP:子类型必须能够替换其基类型
派生类必须能通过其基类的接口使用,客户端无需了解二者之间的差异
详见之前写的LSP博客。
(4)ISP (The Interface Segregation Principle)接口聚合原则
客户端不应依赖于它们不需要的方法。
“fat”的接口有很多缺点,不够聚合。
“fat”接口可分解为多个小的接口,不同的接口向不同的客户端提供服务,客户端只访问
自己所需要的端口。
例如:
又一实例:
(5)DIP(The Dependency Inversion Principle)依赖转置原则
-抽象的模块不应该依赖于具体的模块
-具体应该依赖于抽象
简单来说,解决耦合。一般情况下抽象的变化概率很小,让用户程序依赖于抽象,实现的细节也依赖于抽象。即使实现细节不断变动,只要抽象不变,客户程序就不需要变化。这大大降低了客户程序与实现细节的耦合度。
抽象出共同点,然后让实现细节依赖于抽象,客户端也使用抽象:
相当于增加了一个桥梁-接口。
另外:GRASP:General Responsibility assignment Software Patterns (principles),
是关于如何为“类”和“对象”指派“职责”的一系列原则。
相关阅读
现在大家越来越喜欢在天猫商城上面去购物了,因为快捷又方面,那么大家想不想知道关于这一块的一些优惠呢?小编今天就来讲讲其中的天
打个广告,帮朋友卖点东西,东西超便宜的哟【衣服鞋子等】,厂家直接出货,绝对低于市场价!!! 一般都比市场价便宜3—7折【都是牌子货】,如果
面向对象的七大设计原则 文章目录面向对象的七大设计原则简述七大原则之间的关系一、开闭原则(The Open-Closed Principle ,OCP)概
Design for Xuture:IOS 11用户界面设计指导六个原则和
随着X的问世,IOS11设计规范也相应更新,读下来的第一感受是:很大篇幅都是针对X进行的增补,包含一丝丝未来移动APP设计的气息,即:Design f
用户界面设计 接口设计主要包括三个方面的内容:一是设计软件构件间的接口;二是设计模块和其他非人的信息生产者和消费者(如外部