模式和面向对象可复用设计的几大原则

什么是模式?模块化的过程是怎样的?

人们在自己的环境中不断地发现问题并寻找问题的解决方案,在这过程中,发现的问题和解决方案以不同的面孔重复出现,在这些不同的面孔背后又有共同的本质,这共同的本质就是模式。

模块化的过程就是把问题抽象化,在忽略掉不重要的细节后,发现问题的一般性本质,并找出普遍适用的解决方案的过程。

在软件开发中,为何我们需要去了解和运用模式?

了解模式有利于我们更好地去定位和了解问题的本质,在此同时,模式也可以为我们解决问题提供一个快速的、比较好的解决方案。


“开-”原则

面向对象设计(Object Oriented Design OOD)的第一块基石,便是“开-”原则(Open-Closed Principle , 即 OCP

OCP指的是一个软件实体应该对扩展开放,对修改关闭。用面向对象的语言来讲就是:不允许修改的是系统的抽象层,允许扩展的是系统的具体实现层。

面向对象的重要原则是创建抽象化,并从抽象化导出具体化。


里氏代换原则Liskov Substitution Principle , LSP ) :一个软件实体如果使用的是一个基类的话,那么一定适用于其子类,而且它根本不能察觉出基类对象和子类对象的区别。


依赖倒转原则Dependence Inversion Principle , DIP:

要求客户端依赖于抽象耦合(Abstraction should not depend upon details . Details should depend upon abstractions )。

另一种表述是:要针对接口编程,不要针对实现编程(Program to an interface , not an implementation)。

如果设计师希望遵守“开-闭”原则,那么依赖倒转原则便是达到要求的途径。

依赖倒转原则是OO设计的核心原则,设计模式的研究和应用是以依赖倒转原则为指导原则的。


接口隔离原则(Interfance Segregation Principle,ISP)

使用多个专门的接口比使用单一的总接口要好,换言之,从一个客户累的角度来讲:一个类对另外一个类的依赖性应当是建立在最小的接口上的。


合成/聚合复用原则(Composite/Aggregate Reuse Principle,CAPP)

在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分;新的对象通过想这些对象委派达到复用已有功能的目的。

简单表述:要尽量使用合成/聚合,尽量不要使用继承。


迪米特原则(Law of Demeter ,LoD)或最少知识原则(Least Knowledge Principle,LKP)

一个对象应当对其它对象有尽可能少的了解。


注:本篇大部分内容出之阎宏老师的《Java与模式》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值