java-设计模式

java-设计模式

ID:38381452

大小:1.83 MB

页数:72页

时间:2019-06-11

java-设计模式_第1页
java-设计模式_第2页
java-设计模式_第3页
java-设计模式_第4页
java-设计模式_第5页
资源描述:

《java-设计模式》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、设计模式1前言23种设计模式,学了很多次,每次都是学完就忘。网上有很多形象的例子、代码、视频,但实现方式上,很难说抓住了精髓,而且还受制于java语言本身(比如,很难在运行时扩展程序,annotation只是一种静态的标识,要达到目的,还需要一套复杂的解析过程。或许可以考虑使用groovy)。更优雅地使用设计模式,更切合实际情况地完成功能,才能在学习的过程中,真正地理解。那时候,才是真懂了。2设计原则面向对象五个基本原则(SOLID)2.1S-单一职责原则Singleresponsibilityprinciple,又称为单一功能原则。如

2、果一个类负责多个功能,那么,要修改任何一个功能时,都会对这个类里的其他功能带来风险。此原则的核心就是解耦和增强内聚性。做一个发送消息的功能。消息的内容、格式大体相同,但推送方式有三种:短信、邮件、站内信。其中,短信消息的标题、内容都需要合在一起,而且,尽量凝练,减少字数。不同的网关,发送的方式不同邮件针对不同的消息,可以使用不同的模板。比如:生日、嘉奖信等都有一套或多套模板,除了文字描述,还有图片、表格等。而且针对不同的邮箱,发送的协议也不同。站内信较自由的一种格式,就是普通的网页。但,由于web界面都是无状态的,需要定时刷新界面(或使

3、用ajax刷新局部界面),推送消息2.1.1反模式publicclassMessageService{publicvoidsend(Objecto){…}}三种消息都使用Object封装,看似面向对象,实际上,就是一锅粥。1.1O-开闭原则Openforextension,Closedformodification增加新功能时,现有的代码,对扩展开放,对修改封闭。1.1.1反模式简单工厂模式。例如,创建产品的工厂类,当新增产品时,就需要修改工厂类。示例代码publicIProductgetProduct(Stringname){IPro

4、ductproduct=null;//接口或抽象类,都可以switch(name){case"A":product=newA();break;case"B":product=newB();break;}returnproduct;}很显然,要增加新产品“C”时,就需要在switch里新增一条代码。可以尝试修改代码,如下:示例代码publicIProductgetProduct(StringclassName){return(IProduct)Class.forName(className).newInstance();}1.2L-里氏置

5、换原则LiskovSubstitutionPrincipleLSP。姓里的女士提出来的。林先生在上课时风趣地称之为“老鼠的儿子会打洞”。^_^1.2.1反模式下面的示例,比较绕,可以忽略。正方形是特殊的长方形publicclassRectangle{privateintwidth;privateintheight;publicRectangle(intwidth,intheight){this.width=width;this.height=height;}}publicclassSquareextendsRectangle{publi

6、cSquare(intwidth,intheight){this.width=width;this.height=width;/***或者*this.width=height;*this.height=height;*/}}Square只需要一个属性,却从父类继承了两个。必须舍弃一个!1.1I-接口隔离原则InterfaceSegregationPrinciple拆分非常庞大臃肿的接口成为更小的和更具体的接口,从而容易重构,更改和重新部署。1.2D-依赖倒置原则DependenceInversionPrinciple上下层之间,应该相互

7、依赖于抽象出来的接口,而不是具体实现。更加精简的定义就是“面向接口编程”。通过抽象(抽象类或接口)使各个类或模块的实现彼此独立,不相互影响,实现模块间的松耦合。使用接口或者抽象类的目的是制定好规范和契约,而不去涉及任何具体的操作,把展现细节的任务交给他们的实现类去完成。如果没有实现这个原则,那么也就意味着开闭原则(对扩展开发,对修改关闭)也无法实现。传统实现:service<->dao新式实现:serviceextendsdao,handler1.1迪米特法则又叫作最少知识原则(不和陌生人说话)。一个类应该对自己需要耦合或调用的类知道得

8、最少,你(被耦合或调用的类)的内部是如何复杂都和我没关系,那是你的事情,我就知道你提供的public方法,我就调用这么多,其他的一概不关心。2Java对象之间的关系注:通常,复杂的结构都会使用UML图形去表

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

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

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