欢迎来到天天文库
浏览记录
ID:25338745
大小:483.50 KB
页数:44页
时间:2018-11-19
《面向对象设计原则.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、周坤人生才是大方向面向对象设计原则1.单一职责原则(SRP):一个类只能承担一个职责,即就一个类而言,应该仅有一个引起它变化的原因。2.开-闭原则(OCP):对扩展开放,对修改关闭3.里氏替换原则(LSP):子类型必须能够替换基类型4.依赖倒置原则(DIP:dependenceinversion):针对接口编程,不要针对具体编程。5.接口隔离原则(ISP):使用多个专门的接口比使用单一的接口要好。同一个角色提供宽、窄不同的接口,以对付不同的客户端6.合成/聚集复用原则(CARP:composite/aggregatereuseprinciple
2、):即尽量使用合成/聚集复用而不是继承复用。7.迪米特法则(LoD:LawofDemeter):最少知识原则:要求一个类(软件实体)应该尽可能少的和其它类(软件实体)发生作用1.单一职责原则(SRP):一个类只能承担一个职责,即就一个类而言,应该仅有一个引起它变化的原因。因为每一个职责都是变化的一个轴线,当需求变化时,该变化会表现为类的职责的变化。如果一个类承担了多于一个的职责时,那么引起它变化的原因就有多个。2.开-闭原则(OCP):对扩展开放,对修改关闭一个软件实体应该对扩展开放,对修改关闭。就是说,在设计一个模块的时候,应当使这个模块可以
3、在不被修改的情况下被扩展。开-闭原则是面向对象设计可复用的第一块基石。如何实现开-闭原则:1)抽象化是关键可以给出一个或多个抽象类或接口,规定出所有的具体类必须提供的方法的特征(signature)作为系统的抽象层。这个抽象层预见了所有的可能扩展。从抽象层导出的具体类可以修改或扩展系统的行为而不用修改抽象层。2)对可变性封装原则找到一个系统的可变因素把它封装成起来。一个系统的可变性应当被封装成对象,同一种可变性的不同表象意味着同一个继承等级结构中的不同子类。不要把一种可变性和另外一种可变性混在一起,类的继承结构一般不要超过两层,不然就意味着把两
4、种不同的可变性封装在了一起。3.里氏替换原则(LSP):子类型必须能够替换基类型凡是使用基类型的地方,子类型一定适用,即子类可以替换基类。反之不成立。里氏替换原则是继承复用的基石,只有子类可以替换掉基类,软件单位的功能不受影响时,基类才能真正的被复用。而子类才能在基类的基础上增加新的功能。周坤人生才是大方向如:Base是基类,Sub是Base的子类,那么如果有方法method(Baseb),则method(s)一定成立,其中s是Sub的对象。LSP原则在设计模式中的体现:策略模式:合成模式:代理模式:4.依赖倒置原则(DIP:dependenc
5、einversion):针对接口编程抽象不应该依赖于具体,具体要依赖于抽象.(针对接口编程,不要针对具体编程。)针对接口编程的意思是说,应该使用抽象类或接口进行变量的类型声明、参数的类型声明、方法的返回类型声明、以及数据类型的转换等。不要针对具体编程的意思是说,不应该使用具体类进行变量的类型声明、参数的类型声明、方法的返回类型声明、以及数据类型的转换等.如:不应该这样声明:Vectoremployee=newVector();而应该这样声明employee:Listemployee=newVector();这样的好处是决定将Vector改成Ar
6、rayList时,代码的改动比较少.list是接口。依赖倒置原则前提是假定所有的具体类都是变化的,有一些具体类可能是相当稳定,不会发生变化的。消费这个具体类的客户端就完全可以使用这个具体类,没必要为此发明一个抽象类型。以抽象方式耦合是依赖倒置原则的关键。5.接口隔离原则(ISP):使用多个专门的接口比使用单一的接口要好。从客户的角度来说:一个类对另外一个类的依赖性应当是建立在最小的接口上的。如果客户端只需要某一些方法的话,那么就应当向客户端提供这些需要的方法,而不要提供不需要的方法。向客户端提供public方法意味着向客户端作出承诺,过多的承诺
7、会给系统的维护造成不必要的负担。定制服务:同一个角色提供宽、窄不同的接口,以对付不同的客户端。这样每一接口仅将客户需要的行为暴露给客户端,而没有将客户不需要的行为放在接口中。适配器模式是接口隔离原则的一个应用。6.合成/聚集复用原则(CARP:composite/aggregatereuseprinciple):合成/聚合复用原则是在一个新的对象里面使用一些已有的对象,使之成为新对象的一部份,新的对象通过向这些对象的委派达到复用已有功能的目的。即尽量使用合成/聚集复用而不是继承复用。周坤人生才是大方向Has-A:代表一个类是另外一个类的一个组成
8、部分或角色。Is-A:代表一个类是另外一个类的一种。如果两个类是“Has-A”关系那么应使用合成/聚集,如果是“Is-A”关系那么可使用继承。7.迪米
此文档下载收益归作者所有