设计模式的六大原则

(以下内容极其后面的关于设计模式的内容均来自《java高手真经(系统架构)》)

设计模式六大原则

原则含义具体方法
开闭原则对外扩展开放 ,对修改关闭多使用抽象类和接口
里氏替换原则基类可以被子类替换使用抽象类继承,不使用具体类继承
合成复用原则更依赖于抽象,不依赖于具体针对接口编程,不针对实现编程
接口隔离原则使用多个隔离的接口,比使用单个接口好简历最小接口
迪米特法则一个实体软件应该尽可能少的与其他实体发生相互作用通过中间类建立联系
依赖倒转原则尽量使用合成/聚合,而不是使用继承尽量使用合成/聚合,而不是使用继承


开-闭原则(OCP

对扩展快放:有新的需求或者变化时,可以对现有的代码进行扩展,以适应新的情况。

对修改关闭:类一旦设计完成,就可以独立完成自己的工作,而不要对类进行任何修改。

其他的原则基本都是对这一个原则服务的。

实现方式:抽象,多态,继承,接口

(离散的总结)

抽象是稳定的。

类依赖于抽象,抽象是不变化的,所以对类的修改是关闭的。

针对于抽象编程,而不是针对于具体编程。

只是针对于变化的程序进行抽象,在操作系统不适用于抽象

内容来源:http://video.tudou.com/v/XMTc5ODcyMzAwNA==.html


里氏替换原则

子类必须能够替换成他们的基类。

解释得详细一些就是:在一个软件系统中,子类应该可以替换任何基类能够出现的地方,并且经过替换以后,代码还能正常工作,子类也能够在基类的基础上增加新的行为。

在进行设计的时候,我们应该尽量的从抽象类继承,而不是从具体类继承,如果从继承等级树来看,所有叶子节点应该当是抽象类或者接口。当然,具体情况具体分析。


依赖倒转原则

依赖也就是耦合,分为三种:

零耦合关系:两个类没有依赖关系。

具体耦合关系:两个具体类中间有依赖关系,如果一个具体类直接引用另一个具体类,就是这种关系。

抽象耦合关系:这种关系发生在一个具体类和恶一个抽象类之间,这样就使必须发生关系的类之间保持最大的灵活性。


倒转:程序中所有的依赖关系都是终止于抽象类或接口

依赖倒转原则要求客户端依赖于抽象耦合。

开闭原则的主要机制就是依赖倒转原则,里氏替换原则是依赖倒转原则的基础,依赖倒转原则是OOD夫人核心基础。


接口隔离原则:

一个类对另外一个类的依赖性应当是建立在最小的接口上的。


迪米特法则

初衷:降低类之间的耦合,由于每个类尽量减少对其他类的依赖,因此,很容易使得系统的功能模块独立,相互之间不存在(或者很少存在)依赖关系。

缺点:系统中存在大量的中介类,这些类的存在完全是为了传递类之间的相互调用的关系---在一定程度上增加了系统的复杂度。


合成复用原则

合成聚合复用原则就是在一个新的对象里面使用一些已有的对象,使之成为新的对象的一部分,新的对象通过向这些对象的委派达到复用已有功能的目的。

更简短的描述就是:要尽量使用合成聚合,尽量不要使用继承。

聚合表示整体和部分的关系,表示"拥有"。合成表示更强的"拥有"。

在面向对象的设计中,有两种基本的办法实现复用:

第一种是通过合成/聚合,即合成复用原则,含义是,尽量使用合成/复用原则,而不是使用继承。

第二种是继承。

只有当以下的条件适合全部满足时才应当使用继承关系:

子类是超类的一个一个特殊的种类,而不是超类的一个角色。

永远不会出现将一个子类转换成另一个类的子类的情况,如果不能肯定将来是否会变成另外一个类的子类的话,就不要使用继承。

子类具有扩展超类的责任,而不是具有置换掉或者注销掉超类的责任。如果一个类需要置换掉超类的行为,那么这个类就不应该是这个超累的子类。

只有在分类学角度有意义时,才可以使用继承,而不要从工具类继承。







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值