OOP面向对象设计6大原则

在软件设计中,特别是OOP的类设计中,有六大原则:
●开闭原则(Open-Closed Principle)
●依赖倒置原则(Dependence Inversion Principle)
●接口隔离原则(Interface Segregation Principle)
●里氏代换原则(Liskov Substitution Principle)
●迪米特原则(Law of Demeter)
●合成复用原则(Composite/Aggregate Reuse Principle)
●单一职责原则(Single-Responsibility Principle)

[color=blue][b]开闭原则[/b][/color]
[b]开闭原则中国的“开(Open)”是对功能开发即扩展,而“闭(Closed)”失败源代码的修改关闭,即不允许修改源代码而对扩展功能。装饰模式就是符合该原则的开发模式。[/b]
那么如何在设计中实现“开-闭”原则呢?解决问题关键在于抽象化,抽象化是面向对象设计的第一个核心本质。对一个事物抽象化,实质上是在概括归纳总结它的本质,抽象让我们抓住最最重要的东西,从更高一层去思考。在面向对象编程中,通过抽象类及接口,规定了具体类的特征作为抽象层,相对稳定,不需更改,从而满足“对修改关闭”;而从抽象类导出的具体类可以改变系统的行为,从而满足“对扩展开放”。

[color=blue][b]依赖倒置原则[/b][/color]
[b]“依赖倒置”就是要依赖于抽象,不要依赖于具体。抽象不应当依赖于细节;细节应当依赖于抽象;要针对接口编程,不针对实现编程。[/b]
那么怎么才能做到“依赖倒置”呢?不依赖于具体类,即程序中所有的依赖关系都应该终止于抽象类或者接口。尽量做到:
1)、任何变量都不应该持有一个指向具体类的指针或者引用;
2)、任何类都不应该从具体类派生;
3)、任何方法都不应该覆写它的任何基类中的已经实现的方法。

[color=blue][b]接口隔离原则[/b][/color]
[b]“接口隔离”是说使用多个专一功能的接口比使用一个的总接口总要好,一个类对另外一个类的依赖性应当是建立在最小接口上的。[/b]

[color=blue][b]里氏代换原则[/b][/color]
“里氏代换”是说子类型必须能够替换它们的基类型,一个软件实体如果使用的是一个基类,那么当把这个基类替换成继承该基类的子类,程序的行为不会发生任何变化。软件实体察觉不出基类对象和子类对象的区别。可以很容易的实现同一父类下各个子类的互换,而客户端可以毫不察觉。

[color=blue][b]迪米特原则[/b][/color]
迪米特原则即迪米特法则,这是要求类之间交互时应该暴露给外部最少的信息。
迪米特法则的主要用意是控制信息的过载,在将其运用到系统设计中应注意以下几点:
1) 在类的划分上,应当创建有弱耦合的类。类之间的耦合越弱,就越有利于复用。
2) 在类的结构设计上,每一个类都应当尽量降低成员的访问权限。一个类不应当
public自己的属性,而应当提供取值和赋值的方法让外界间接访问自己的属性。
3) 在类的设计上,只要有可能,一个类应当设计成不变类。
4) 在对其它对象的引用上,一个类对其它对象的引用应该降到最低。

[color=blue][b]合成复用原则[/b][/color]
[b]“合成复用”就是要尽量使用合成/聚合,尽量不要使用继承。[/b]
如果新对象的某些功能在别的已经创建好的对象里面已经实现,那么尽量使用别的对象提供的功能,使之成为新对象的一部分,而不要自己再重新创建。

[color=blue][b]单一职责原则[/b][/color]
就一个类而言,应该只专注于做一件事和仅有一个引起它变化的原因。所谓职责,我们可以理解他为功能,就是设计的这个类功能应该只有一个,而不是两个或更多。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值