设计模式七大原则

概述GoF(Gang of Four)

GoF是Java基础知识和J2EE框架知识之间一座隐性的"桥"。GoF并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧,让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,GoF反复向你强调一个宗旨:要让你的程序尽可能的可重用。

GoF与J2EE的区别:

1. 设计模式更抽象,J2EE是具体的产品代码,我们可以接触到,而设计模式在对每个应用时才会产生具体代码。
2. 设计模式是比J2EE等框架软件更小的体系结构,J2EE中许多具体程序都是应用设计模式来完成的。
3. J2EE只是适合企业计算应用的框架软件,但是GoF的设计模式几乎可以用于任何应用。

设计模式遵循的原则:
(1)开闭原则(OCP)

在面向对象编程领域中,开闭原则规定“软件中的对象(类和接口,模块,函数等等)应该对于扩展是开放的,但是对于修改是封闭的”,即一个实体是允许在不改变它的源代码的前提下变更它的行为。

(2)里氏替换原则(LSP)

继承必须确保超类所拥有的性质在子类中任然成立。里氏替换原则是实现开闭原则的重要方法之一;克服继承中重写父类造成的可复用性变差的缺点;类的扩展不会给已有的系统引入新的错误。

子类可以扩展父类的功能,但不能改变父类原有的功能。

(3)依赖倒置原则(DIP)

强调要面向接口编程,其降低了客户与实现之间的耦合。提高系统稳定性;减少并行开发引起的风险;可以提高代码的可读性和可维护性;每个类应尽量提供接口或抽象类,或者两者兼具;使用继承时尽量遵循里氏替换原则。

(4)单一职责原则(SRP)

单一职责原则规定一个类应该有且仅有一个引起它变化的原因,否则类应该被拆分。通俗讲就是对象不应该承担太多责任,否则容易造成削弱或抑制类功能的实现,或者为实现某一功能造成代码的冗余。

(5)接口隔离原则(ISP)

定义:客户端不应该被迫依赖于它不使用的方法;一个类对另一个类的依赖应该建立在最小的接口上。规定程序员尽量将臃肿庞大的接口拆分成更小的和更具体的接口,即要为各类建立它们的专属接口。

(6)迪米特法则(LoD)

又称 “最少知识原则(LKP)”,定义为只与你的直接朋友交谈,不跟“陌生人”说话。即如果两个软件实体无须直接通信,那么就不应当发生直接的相互调用。这里的朋友指:当前对象本身,当前对象的成员对象,当前对象所创建的对象,当前对象的方法参数等。 但是此法则容易生成大量的中介类。

在类的划分上,应该创建弱耦合的类;在类的结构设计上,尽量降低类成员的访问权限;在类的设计上,优先考虑将一个类设置成不变类;在对其他类的引用上,将引用其它对象的次数降到最低;不暴露类的属性成员,应该提供相应的访问器( get()和set() );谨慎使用序列化(Serializable)功能。

(7)合成复用原则(CRP)

又叫“组合/聚合复用原则(CARP)”,要求在软件复用时,尽量先使用组合或聚合等关联关系来实现,其次才考虑使用继承关系来实现。如果使用继承,必须遵循里氏替换原则。合成复用原则通过将已有的对象纳入新对象中,作为新对象的成员对象来实现的,新对象可以调用已有对象的功能,从而达到复用。

继承复用破坏类的封装性;使子类与父类的耦合度提高;还限制了复用的灵活性。组合或集合复用则消除了以上弊端。

总结开闭原则是总纲,指出对扩展开放,对修改关闭;里氏替换原则,指出不要破坏继承体系;依赖倒置原则,指出要面向接口编程;单一职责原则,指出实现类要职责单一;接口隔离原则,指出在设计接口时要精简单一;迪米特法则,指出要降低耦合度;合成复用原则,指出优先使用组合或聚合关系复用,少用继承关系复用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值