设计模式培训资料_第1页
设计模式培训资料_第2页
设计模式培训资料_第3页
设计模式培训资料_第4页
设计模式培训资料_第5页
已阅读5页,还剩12页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、J a va程序设计的基本概念 什么是程序设计 软件开发的过程,堆本I:是先分析需耍解决的冋题(用户石求)找止解 决的办法,然后把解决办法用相应的程序语言进行农达(也就是编写朋)最 后使用编好的程序公解决问題的这么个过程。 而所训的程序设计,指的就是:在软件开发的过程中,如何找出解决问题 的方法,找到办法过后 如何介理的划分用序结构介理的组织柑庁代码,这样 的一个过用就是程序设计。 程序设计能干什么 好的程序跖I能让程序:更好的完成用户的需求功繼;仃更E的程序架 构:更好的程轮能:更好的复用性*更好的可扩展性、可维护性、可配置性、 可伸缩性:里好的健壮性:吏好的稳定性申O Java程序设计的基

2、本原则-1 面向接口編程 这足亦編程里浙人家公认的第惊则 优先使用对象组合而非类继承 分层 最典型的三层架构,衣现址一逻WE-数据J2 表现层功能,展示数据、人机交互、收集参数桃逻供层 逻辑层功能:进行数据的逻辑校验、进行逻轲判撕、实现业务功能、处理相关功 能、处理后续流程.组织数据返回给表现层 数据层功能:实现数据持久化、实现対探和打久化数据的双向映射 层间交互的基本原则 1;祓现层调用逻辑层逻辑层调用$區不可以反过来 2;层间交互喝应该通过胺I I进行U川,以确保各层的实现独立变化 Je网程序设计的基本原则-2 开闭原则 简眼点说就是对新増丿F放对修改关闭而11.应尽蚩做到不用修改模块的

3、源代码.就能匹改模块的彳亍为。 依赖性倒置原则 这个原则就是依赖抽纹而不婆依赖具体的实现。 接口隔离原则 这个瓯则就楚不婴使川通用的接11.而足为不同的用门使用不同的接11。 替换原则 这个原则就是j-炎臧、,11了以松换父类H出现父类能够出现的ff:何地方 类设计的基本经验 类要单一 加强内聚,松散耦合 好的封装性 类的粒度要合理 实现类不能依赖它的使用类 应考虑灵活性,也就是可配置、可维护 要考虑性能.考虑可伸缩性 要考虑今后可能的变化,也就是可扩展性 要考虑合理的复用 要合理的考电接口和抽象类的使用 尽量减少次与协作类的交互次数和交互信息的量 父类不应知道子类的信息,子类必须知道父类的信

4、息 更多的使用类的细合.而不是继承 访问对象必须通过接口,不能绕过接口直接去访问 设计模式 (Design Patterns) 目的 了解 23 种设计模式 掌握常用几种设计模式 设计模式简介 最早提出“设计模式”概念的是建筑设计大师亚力山大 Alexander。在1970 年他的 建筑的永恒之道 里描述了投计模式的发现, 因为它已经存在了千 百年之久,而现代才被通过大量的研究而被发现。 在建筑的永恒之道里这样描述:模式是一条由三个部分组成的通用 规则:它表示了一个特定环境、 一类问题和一个解决方案之间的关系。 每一 个模式描述了一个不断重复发生的问题,以及该问题解决方案的核心设计。 尽管亚力

5、山大的著作是针对建筑领域的,但他的观点实际上适用于所有 的工程设计领域, 其中也包括软件设计领域。 “软件设计模式” ,这个术语是 在 1990 年代由 Erich Gamma 等人从建筑设计领域引入到计算机科学中来 的。目前主要有 23 种。 创建型 创建对象时,不再由我们直接实例化对象;而是根据特定场景,由程序 来确定创建对象的方式,从而保证更大的性能、更好的架构优势。 ? 单例模式 (Singleton) ? 构建模式 (Builder) ? 原型模式 (Prototype) ? 简单工厂模式 (Simple Factory) ? 抽象工厂模式 (Abstract Factory) ?

6、工厂方法模式 (Factory Method) 结构型 将类和对象组合起来,以构成更加复杂的结构,帮助开发人员将简单对 象组合在一起形成更加复杂的结构 ,处理对象与对象之间的各种关系 ? 代理模式 (Proxy) ? 适配器模式 (Adapter) ? 装饰者模式 (Decorator) ? 组合模式 (Composite) ? 桥连接模式 (Bridge) ? 蝇量模式 (Flyweight) 外观模式(Facade) 行为型 用于帮助系统间各对象的通信,以及如何控制复杂系统中流程。 ?策略模式(Strategy) ?状态模式(State) ? 责任链模式(Chain of Responsi

7、bility) ?解释器模式(I nterpreter) ?命令模式(Command) ?观察者模式(Observer) ?备忘录模式(Memento) ?迭代器模式(Iterator) ?模板方法模式(Template Method) ?访问者模式(Visitor) ? 中介者模式(Mediator) 23种设计模式 经典文档-23种设计 模式.docx 常见设计模式介绍 1. 单例模式(singleton) 有些时候,允许自由创建某个类的实例没有意义,还可能造成系统性能下降。 如果一个类始终只能创建一个实例,则这个类被称为单例类,这种模式就被 称为单例模式。 public cLass 3

8、Lngletun public static void mciin (String ) /创Singl*ton对躱不能通过构造器”只能通过g工zm方袪 S i nrj 1 on s 1 = S ng-1 e-七口n . 丁一 JTrz吕 tm riQF (); Singleton s2 = Singleton. tTrs*an 0) Systejm. out .prin*tln (扌J 计扌J E卩:+ prin七Datm 0); /把作业队列整体前移一位,并将剩下的作业数减1 System.drrayaopy(printData , 1, printDataf 0, 一-dataNum);

9、public void getData(String msg) if (da七aNum = MAX_CACHE_LINE) System, out .printin列已淌,添加失败); else /把打印数据添加到队列里,已保存数据的数量加1. printData dataNum-*-+ = msg; BetterPrintmr, Output 的一彳、实现 public class 3etterPrinter implements Output private String printData = new String- MAX CACHE LINE * 2 /用以记录当前需打印的作业数 p

10、rivate int dataNum = 0; public void ou七() /只要还有作业,继续打印 while(dataNum 0) System, out .printin (高速打卬机正在打印:n + printData 0); /把作业队列整体前移一位,并将剩下的作业数减1 System.rraycopy(printData r lr printDatar 0r dataNum); public void getData(String msg) if (dataNum = MAX CACHE LINE * 2) System, out .printin (n输出队列已满添加失败

11、”); else /把打印数据添加到队列里,已保存数据的数量加 printData Lda七aNum+ = msg; OutputFactory,简单匸类 public Output getPrinterOutpu-t (Stiring type) if (type.equalsignoreCase(MbetterM) return new BetterPrintEr (); else return new Printer(); Computer public clas s Comput总工 priva七e 厶口七put 匸七; public Comp口t卷工(CnrtFiit cut) (

12、七his.out out; /定义一吓模拟更取字符串输入的方法 public void keyLii (String msc-) l cut * getData(msg); 定义一个模拟打印的方法 public void print() ( Ollt . out (); public 耳七ati.c void Twain (3七工匚口 args) / f 创建 Outpu七Wbu七ory of - new OutputFac七ory(): 将Output对磔传入创CcmfLLter对鮫 DitLputer o 二 new Compu七w工(of .吕色七总匸丄口匕总工Gintpu七(zi匸二皿

13、己1 I ; c. keyln (建扎水恒之道”); c-keyZn建筑模式语言); c-prInt(); c - newi of,Printer Output- r,jce 七七三匸); c - keyln (建筑水恒之道); c. keyin ( R建筑摸式语H ); c,print (); 使用简单工厂模式的优势:让对象的调用者和对象创建过程分离,当对象调 用者需要对象时,直接向工厂请求即可。从而避免了对象的调用者与对象的 实现类以硬编码方式耦合,以提高系统的可维护性、可扩展性。工厂模式也 有一个小小的缺陷:当产品修改时,工厂类也要做相应的修改。 3. 工厂方法(Factory Meth

14、od)和抽象工厂(Abstract Factory) 如果我们不想在工厂类中进行逻辑判断,程序可以为不同产品类提供不同的 工厂,不同的工厂类和产不同的产品。当使用工厂方法设计模式时,对象调 用者需要与具体的工厂类耦合,如: 厂类的定义1 jlasa impLaments OutputF*匚上工丫 public寸mtOutput() ( 该工厂只员责产生B航“工叶血“工对第 return new Bett ) 抽線匚厂类的调用 Output Factory of = OutputFactOEyFactcirY.孑日七加 tpu七faut;Qiy (“匕日七七兮匕); Computer u = n

15、ew c:mfiuter (of . get-Output ( ); 4. 外观模式(Facade) 随着系统的不断改进和开发,它们会变得越来越复杂,系统会生成大量的类, 这使得程序流程更难被理解。外观模式可为这些类提供一个简化的接口,从 而简化访问这些类的复杂性。 外观模式(Facade)也被称为正面模式、门面模式,这种模式用于将一组复 杂的类包装到一个简单的外部接口中。 流程1 原来的方式 /依次创建三个部门实例 Payment pay = new PaymentImpl (); Cook cook = new Cooklmpl(); Waiter waiter = new Waiterl

16、mpl (); /依次调用三个部门实例的方法来实现用餐功能 String food = pay.pay(); food = cook.cook(food); waiterserve(food); 门面模式 public class Facade /定义被Facade封装的三个部门 Payment pay; Cook cook; Waiter waitmr; /构造器 public Facade() this.pay = new Paymentlmpl(); this.cook = new Cooklmpl(); this.waiter = new Haiterlmpl(); public vo

17、id srvFood() /依次调用三个部门的方法,封裟成个 se rveFood )方法 String food = p*y*p*y(); food = cookccoXfcod); waiter . serve (fiod); 门画模式调用 Facade f = new Facsde(); serveFood(); 5.代理模式(Proxy) 代理模式的作用是: 为其他对象提供一种代理以控制对这个对象的访问。在 某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以 在客户端和目标对象之间起到中介的作用。 代理模式一般涉及到的角色有: 抽象角色:声明真实对象和代理对象的共同接口; 代理角色:代理对象角色内部含有对真实对象的引用,从而可以操作真实对 象,同时代理对象提供与

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论