面向对象设计原则.ppt

面向对象设计原则.ppt

ID:52495669

大小:170.00 KB

页数:31页

时间:2020-04-08

面向对象设计原则.ppt_第1页
面向对象设计原则.ppt_第2页
面向对象设计原则.ppt_第3页
面向对象设计原则.ppt_第4页
面向对象设计原则.ppt_第5页
资源描述:

《面向对象设计原则.ppt》由会员上传分享,免费在线阅读,更多相关内容在PPT专区-天天文库

1、面向对象设计原则OOPrinciples体系结构和依赖性设计正在“腐烂”的征兆过于僵硬Rigidity过于脆弱不可重用性粘滞性过高开放关闭原则(OCP)Amoduleshouldbeopenforextensionbutclosedformodification.一个模块应该只在扩展的时候被打开(暴露模块内部),在修改的时候是关闭的(模块是黑盒子)OCP-动态多态性structModem{enumType{hayes,courrier,ernie)type;};structHayes{Modem::Typetype;//Hayesrelatedst

2、uff};structCourrier{Modem::Typetype;//Courrierrelatedstuff};structErnie{Modem::Typetype;//Ernierelatedstuff};voidLogOn(Modem&m,string&pno,string&user,string&pw){if(m.type==Modem::hayes)DialHayes((Hayes&)m,pno);elseif(m.type==Modem::courrier)DialCourrier((Courrier&)m,pno);elsei

3、f(m.type==Modem::ernie)DialErnie((Ernie&)m,pno)//...yougettheidea}OCP-动态多态性classModem{public:virtualvoidDial(conststring&pno)=0;virtualvoidSend(char)=0;virtualcharRecv()=0;virtualvoidHangup()=0;};voidLogOn(Modem&m,string&pno,string&user,string&pw){m.Dial(pno);//yougettheidea.}

4、OCP-静态多态性另外一种使用OCP的技术就是使用模板或范型。LogOn函数不用修改代码就可以扩展出多种类型的modem。templatevoidLogOn(MODEM&m,string&pno,string&user,string&pw){m.Dial(pno);//yougettheidea.}Liskov替换原则(LSP)Subclassesshouldbesubstitutablefortheirbaseclasses.子类应该可以替换其基类Liskov替换原则(LSP)Derived类应该能替换其Base类。

5、也就是说,Base基类的一个用户User如果被传递给一个Devrived类而不是Base类作为参数,也能正常的工作。如果某个User函数有一个Base类型的参数,那么,将一个Derived类的实例作为参数传递给User函数也应该是合法的。依赖性倒置原则(DIP)DependuponAbstractions.Donotdependuponconcretions.依赖抽象,不要依赖具体依赖性倒置原则(DIP)依赖性倒置原则(DIP)接口隔离原则(ISP)Manyclientspecificinterfacesarebetterthanonegenera

6、lpurposeinterface多个和客户相关的接口要好于一个通用接口。接口隔离原则(ISP)接口隔离原则(ISP)发布重用等价原则(REP)重用的粒度就是发布的粒度。Thegranuleofreuseisthegranuleofrelease.一个可重用的元件(组件、一个类、一组类等),只有在它们被某种发布(Release)系统管理以后,才能被重用。用户不愿意使用那些每次改动以后都要被强迫升级的元件。因此,即使开发者发布了可重用元件的新版本,他也必须支持和维护旧版本,这样才有时间让用户熟悉新版本。因此,将什么类放在一个包中的判断标准之一就是重用

7、,并且因为包是发布的最小单元,它们同样也是重用的最小单元。体系结构师应该将可重用的类都放在包中共同封闭原则(CCP)一起变化的类放在一起。Classesthatchangetogether,belongtogether.一个大的开发项目通常分割成很多网状互联的包。管理、测试和发布这些包的工作可不是微不足道的工作。在任何一个发布的版本中,如果改动的包数量越多,重建、测试和部署也就会越多。因此我们应该尽量减少在产品的发布周期中被改动的包的数量,这就要求我们将一起变化的类放在一起(同一个包)。共同重用原则(CRP)不一起重用的类不应该放在一起。Class

8、esthataren’treusedtogethershouldnotbegroupedtogether.对一个包的依赖就

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。