经典gof设计模式笔记

经典gof设计模式笔记

ID:20230106

大小:406.50 KB

页数:59页

时间:2018-10-11

经典gof设计模式笔记_第1页
经典gof设计模式笔记_第2页
经典gof设计模式笔记_第3页
经典gof设计模式笔记_第4页
经典gof设计模式笔记_第5页
资源描述:

《经典gof设计模式笔记》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、东方标准http://soft.oneedu.cn设计模式(PatternsinJava)R子总结笔记2006.10.17创建模式Factory(工厂模式):工厂模式就象使用new一样频繁。Prototype(原型模式):用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。Builder(建造模式):汽车由车轮方向盘发动机很多部件组成,同时,将这些部件组装成汽车也是一件复杂的工作,Builder模式就是将这两种情况分开进行。Singleton(单例模式):保证一个类只有一个实例,并提

2、供一个访问它的全局访问点。结构模式Fçade(门面模式):可扩展的使用JDBC针对不同的数据库编程,Facade提供了一种灵活的实现。Proxy(代理模式):以Jive为例,剖析代理模式在用户级别授权机制上的应用。Adapter(适配器模式):使用类再生的两个方式:组合(new)和继承(extends),这个已经在"thinkinginjava"中提到过。Composite(合成模式):就是将类用树形结构组合成一个单位.你向别人介绍你是某单位,你是单位中的一个元素,别人和你做买卖,相当于和单位做

3、买卖。文章中还对Jive再进行了剖析。Decorator(装饰模式):Decorator是个油漆工,给你的东东的外表刷上美丽的颜色。Bridge(桥接模式):将"牛郎织女"分开(本应在一起,分开他们,形成两个接口),在他们之间搭建一个桥(动态的结合)。Flyweight(享元模式):提供Java运行性能,降低小而大量重复的类的开销。行为模式Template(模板方法模式):实际上向你介绍了为什么要使用Java抽象类,该模式原理简单,使用很普遍。Memento(备忘录模式):很简单一个模式,就是在

4、内存中保留原来数据的拷贝。Observer(观察者模式):介绍如何使用JavaAPI提供的现成Observer。ChainofResponsibility(责任链模式):各司其职的类串成一串,好象击鼓传花,当然如果自己能完成,就不要推委给下一个。Command(命令模式):什么是将行为封装,Command是最好的说明。State(状态模式):状态是编程中经常碰到的实例,将状态对象化,设立状态变换器,便可在状态中轻松切换。Strategy(策略模式):不同算法各自封装,用户端可随意挑选需要的算法。

5、Mediator(调停者模式):很象十字路口的红绿灯,每个车辆只需和红绿灯交互就可以。Interpreter(解释器模式):主要用来对语言的分析,应用机会不多。Visitor(访问者模式):访问者在进行访问时,完成一系列实质性操作,而且还可以扩展。Iterator(迭代模式):这个模式已经被整合入Java的Collection在大多数场合下无需自己制造一个Iterator,只要将对象装入Collection中,直接使用Iterator进行对象遍历。59东方标准http://soft.oneedu

6、.cn1.创建/工厂模式(Factory)工厂模式定义:提供创建对象的接口,有工厂方法(FactoryMethod)抽象工厂(AbstractFactory)两种。工厂模式是我们最常用的模式了,著名的Jive论坛,就大量使用了工厂模式,工厂模式在Java程序系统可以说是随处可见。为什么工厂模式是如此常用?因为工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象,如Aa=newA()工厂模式也是用来创建实例对象的,所以以后new时就要多个心眼,是否可以考虑实用工厂模式,虽然

7、这样做,可能多做一些工作,但会给你系统带来更大的可扩展性和尽量少的修改量。我们以类Sample为例,如果我们要创建Sample的实例对象:Samplesample=newSample();可是,实际情况是,通常我们都要在创建sample实例时做点初始化的工作,比如赋值、查询数据库等。首先,我们想到的是,可以使用Sample的构造函数,这样生成实例就写成:Samplesample=newSample(参数);但是,如果创建sample实例时所做的初始化工作不是象赋值这样简单的事,可能是很长一段代码

8、,如果也写入构造函数中,那你的代码很难看了(就需要Refactor重整)。为什么说代码很难看,初学者可能没有这种感觉,我们分析如下,初始化工作如果是很长一段代码,说明要做的工作很多,将很多工作装入一个方法中,相当于将很多鸡蛋放在一个篮子里,是很危险的,这也是有背于Java面向对象的原则,面向对象的封装(Encapsulation)和分派(Delegation)告诉我们,尽量将长的代码分派"切割"成每段,将每段再"封装"起来(减少段和段之间偶合联系性),这样,就会将风险分散,以后如果需要修改,只要

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

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

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