第一篇:《Java与模式》读后记
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案
《Java与模式》读后记
类图中的关系:
1.一般化关系 普通的继承关系
(单向的)2.关联关系 如:在类A中有类B这个类型的成员变量(属性);类A与类B是平等的;使用一根直线连接;可以是单向,也可以是双向的。
(双向的,可以使用两个箭头,也可以一个也不用)。3.聚合关系 体现整体与部分的关系,如:在类A中有类B这个类型的成员变量(属性);类A与类B是不同层次的;只能是单向。
(连线的起始点上有一个空心圈)4.合成关系 体现整体与部分的关系,且整体负责部分的生命周期,如:在类A中有类B这个类型的成员变量;类A与类B是不同层次的;只能是单向。
(连线的起始点上有一个实心圈),不能共享。5.依赖关系 如:在类A中要使用类B这个类型的临时变量或参数变量或类B中的静态函数,表示类A依赖于类B;只能是单向的。
UML建模工具:
Together 可以画图,可以生成代码
精心收集
精心编辑
精致阅读
如需请下载!
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案
Rational Rose 可以画图,可以生成部分代码 Visio
导致一个软件设计的可维护性较低,并随着要求的变化而“腐烂”的原因:
过于僵硬,过于脆弱,复用率低,黏度过高
遵循以下原则,可以有效地提高系统的复用性、可维护性: 开闭原则(Open-Closed Principle):
一个软件实体应当对修改关闭,而对扩展开放。里氏代换原则(Liskov Subsitituion Principle):
任何基类可以出现的地方,子类一定可以出现。依赖倒转原则(Dependency Inversion Principle):
要依赖于抽象,不要依赖于实现。合成/聚合复用原则(Composition/Aggregation Principle):
要尽量使用合成/聚合,而不是使用继承关系来达到复用的目的。
迪米特法则(Law of Demeter):
一个软件实体应当与尽可能少的其它实体发生相互作用。(只与接口发生相互作用,而不与具体类。)接口隔离原则(Interface Segregation Principle):
应当为客户端提供尽可能小的单独的接口,而不要提
精心收集
精心编辑
精致阅读
如需请下载!只能画图
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案
供大的总接口。
开闭原则的关键是“抽象”,将可变的因素封装起来(即抽象出来),然后由各个具体的子类来实现。
模式分为:架构模式、设计模式、代码模式。
架构模式:是一个系统的最高层次策略,确定整体性质、整体目标、整体实现方式的规划等。(如:MVC模式)
设计模式:是中等尺度的结构策略,确定一些组件的结构、行为、相互配合关系等。
代码模式:是特定范围的代码设计规范、实现方式、编程技巧等。
设计模式可以划分为:创建模式、结构模式、行为模式。
创建模式:
------------------------------1.简单工厂模式: 又称为静态工厂模式,是一种“创建模式”,是一个工厂对象根据参数决定创建哪一种产品对象的实例。将大量有共同接口的类实例化。
精心收集
精心编辑
精致阅读
如需请下载!
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案
抽象产品类可以是接口,也可以是抽象类;一般情况下,如果各产品之间有共同的特性,则应该使用抽象类来充当抽象产品角色。
有三个角色:工厂、抽象产品、产品。有些情况下,工厂类与抽象产品类可以合并。
缺点:要扩展子类时,需要修改工厂类。此模式只能在有限的程度上支持“开闭原则”(对客户而言是支持的,对工厂而言是不支持的)。
2.工厂方法模式: 是一种“创建模式”,是虚拟构造子模式,或多态性工厂模式。是简单工厂模式的进一步的抽象和推广,即保留了简单工厂模式的优点,但克服了简单工厂模式的缺点,即将具体创建的工作交给子类去做,而工厂类只是一个抽象类,只给出如何做的接口。
有四个角色:抽象工厂、具体工厂、抽象产品、具体产品。
特点:要扩展子类时,需要创建具体工厂类和具体产品类。其核心是抽象工厂类(简单工厂模式的核心是具体工厂类)。
对于客户是支持“开闭原则”的,对于抽象工厂也是支持的。总之,对于增加新产品而言,此模式是完全支持“开闭原则”的。
精心收集
精心编辑
精致阅读
如需请下载!
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案
3.抽象工厂模式:是一种“创建模式”,与工厂方法模式最大的区别在于,工厂方法模式针对的是一个产品等级结构,而抽象工厂模式针对的是多个产品等级结构。
有四个角色:抽象工厂、具体工厂、抽象产品、具体产品。其中,具体工厂类含有选择合适的产品对象的逻辑。
一般而言,有多少个产品等级结构,有会在工厂角色中发现多少个工厂方法。每一个产品等级结构中有多少个具体产品,就会有多少个产品族。
也就会在产品等级结构中发现多少个具体工厂。
当不变更或增加产品等级结构时,如果要扩展产品族,则要增加“新的产品族的具体工厂类”、“本产品族的每一个产品等级结构的具体产品类”。
这种情况是支持“开闭原则”的;
而如果要变更或增加产品等级结构(增加产品),则需要修改抽象工厂类及所有的工厂角色,这种情况是不支持“开闭原则”的。
注意:具体工厂类可以设计成单例模式。
4.单例模式:
要求产品类的构造函数是私有的,也就是不允许客
精心收集
精心编辑
精致阅读
如需请下载!
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案
户自己创建一个产品类,而必须是通过工厂(这个工厂可能是产品类自己的一个方法)创建。
换言之,单例模式通过自己的一个静态方法创建自己的实例。它使用一个静态属性存储自己的实例,工厂方法永远只提供这一个实例。
单例模式从实现方式是分为:饿汉式(静态成员一开始就初始化)和懒汉式(静态成员在调用实例化类时创建),这两种方式由于构造函数是
私有的,所以此类不能被继承。不过,如果想要继承单例模式的类,可以将它的构造函数申请为Protected。
一般用于提供工具性的函数类。
双重检查成例:
是一种从C语言移植过来的代码模式。在C语言中,它常常用在多线程环境中类的晚实例化里。不过,JAVA中不能使用,因为无法通过编译。
MX Record:
Mail Exchange Record JNDI架构:
Java Naming and Directory Interface(Java命名和地址界面)
5.多例模式:
与单例模式的区别是工厂可以产生多个自己的实例,这些实例用一个集聚对象存储。应用到的地方有:比如,每个实例可
精心收集
精心编辑
精致阅读
如需请下载!
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案
以代表一个状态。
与单例模式一样,也是一种“创建模式”。
6.建造模式:
也是对象的“创建模式”。建造模式可以将一个对象内部的表象与产品的生产过程分割开来,从而可以使一个产品的建造过程具有不同的内部
表象的对象。建造模式利用一个导演者对象和具体的建造者对象一个一个地建造出所有的零件(属性或对象),从而建造所完整的对象。
有四个角色:导演者、抽象建造者、具体建造者、产品。还可能有抽象产品角色。
导演者角色是与客户端打交道的角色,它将客户端创建产品的请求划分为对各个零件的建造请求,再将这些请示委派给具体建造者角色。
一般来说,每有一个产品类,就会有一个相应的具体建造者类,而此产品的零件数目也就是此具体建造者类建造方法的数目。
对于不需要增加产品零件时,要扩展产品时,需要增加产品类、具体建造者类。而如果要增加产品零件,则要修改抽象建造者。
在以下二种情况下可以使用建造模式:
精心收集
精心编辑
精致阅读
如需请下载!
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案
1)产品对象有复杂的内部结构(如零件是对象);
2)产品对象的属性相互依赖,有强制的建造顺序;
3)当产品对象的属性没有确定之前,产品对象不能使用;
例如:肯德基的食品不管在哪个店,味道总是一样的,这就是因为它将产品的生产过程流程过、规范化,客户只要产品,而不管食品是如何
生产出来的,这就是建造模式,即将创建产品的过程由另一方通过流程化的方式来建造。
7.原始模型模式:是对象的创建模式。通过给出一个原型对象来指明所要创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象。
它有二种表现形式:1)简单形式;2)登记形式;这二种形式有着不同的实现,对原始模型模式的模式结构的细节的处理也不相同。
1)简单形式:有三个角色:客户,抽象原型,具体原型。
2)登记形式:有四个角色:客户,抽象原型,具体原型,原型管理器。
扩展新产品时,只需动态地复制原型对象就可以了,精心收集
精心编辑
精致阅读
如需请下载!
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案
只不过要考虑是浅复制还是深复制,如果是浅复制,则直接使用clone方法就可以;
如果是深复制,则原型对象类要实现一个接口Serialization,且此类中的引用对象的原型类都要实现此接口,深复制要深入到多少层
是一个不容易确定的问题,在决定以深复制来复制一个对象的时候,必须确定对间接对象是采用深复制还是浅复制,即要决定深度。
此模式的主要的缺点是:原型类需要配备克隆方法,配备克隆方法需要对类的功能进行通盘考虑,这对于一个新的类不难,但对于已经
存在的类不是很容易,特别是当一个类引用不支持串行化的对象,或者引用含有聚集或循环结构时。
浅复制:复制对象的属性,但被复制的对象与复制的对象中的引用属性指向的是同一个引用。即只复制属性值。默认用Object.clone()可以实现;
深复制:复制对象的属性,并对引用属性重新赋一个有效的新引用。要实现深复制的类需要实现 Serialization 接口,并使用对象流进行复制。
串行化:将一个Java对象串行化只需要实现两个接口中的一个即可:要么实现Serialization接口,要么实现Externalizable接口。
精心收集
精心编辑
精致阅读
如需请下载!
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案
------------------------------
结构模式:
描述如何将类或对象结合在一起形成更大的结构。它描述两种东西:类、类的实例,所以它分为“类的结构模式”和“对象的结构模式”。
类的结构模式:使用继承把类、接口等组合在一起。是静态的。
对象的结构模式:把不同类型的对象组合在一起,是动态的。
------------------------------8.适配器模式:
把一个类的接口变换成客户端所期待的另一种接口,从而使因接口不匹配而无法在一起工作的两个类能够在一起工作。
类的适配器模式:有三个角色:目标角色、源角色、适配器角色。其实就是利用“继承”与“实现”,用适配器角色将源角色适配成目标角色。
对象的适配器模式:有三个角色:目标角色、源角色、适配器角色。使用“委派”而不使用继承与实现,即在适配器类中使用源角色。
此模式应用相当广泛。
精心收集
精心编辑
精致阅读
如需请下载!
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案
9.缺省适配模式:为一个接口提供缺省实现,这样子类型就可以从这个缺省实现进行扩展,而不必从原有接口进行扩展。此模式是适配器模式的一个特例。
如:WindowAdapter。
在任何时候,如果不准备实现一个接口的所有的方法,就可以模仿WindowAdapter的做法制造一个抽象类,给出所有方法的平庸实现,这样,从这个抽象类再继承下去的子类就不用再实现所有的方法了。
10.合成模式:
又叫做“部分---整体模式”,同时也是一个树结构。合成模式的实现根据所实现接口的区别分成两种形式,分另称“透明式”和“安全式”。
透明式和安全式的合成模式都有三个角色:抽象构件、树技构件、树叶构件。
透明式:在抽象构件类里面声明管理子类对象的方法,如:add(), remove(), getChild(),但在运行时对树叶节点做这些操作时会报错。
安全式:只在树技构件中声明管理子类对象的方法,精心收集
精心编辑
精致阅读
如需请下载!
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案
运行时不会报错,但树技与树叶没有共同的接口,不够透明。
其实,每一个合成模式的对象都是一个容器对象,本身包含两种对象,一种是普通对象,另一种是可以包含子对象的对象。
例子:System.Web.UI.Control就是一个合成模式的应用。
11.装饰模式:
又称为包装模式。装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。
角色有:抽象构件角色Component、具体构件角色ConcreteComponent、装饰角色Decorator、具体装饰角色ConcreteDecrator。
“具体构件角色”从“抽象构件角色继承”,“装饰角色”从“抽象构件角色”继承,“具体装饰角色”从“装饰角色”继承。
使用时,先定义一个子类对象(ConcreteComponent),再定义一个装饰子类对象(ConcreteDecrator),并传入前一个对象,Component comp = new ConcreteComponent();
Component compnew = new ConcreteDecorator(comp);
精心收集
精心编辑
精致阅读
如需请下载!
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案
compnew.simpleOperation();// 这里执行被装饰的对象的事件,在此事件中调用了父对象的相关方法,即comp的方法,这就是装饰。
即将“一个ConcreteComponent对象”装饰成“一个ConcreteDecorator对象”,那么compnew这个对象有了ConcreteDecorator的功能,但这个对象的核心还是一个ConcreteComponent对象,所以compnew还拥有后者的功能,即将原对象功能扩展了在新对象中才有的功能。
装饰模式应用最多的是在Java的I/O库,如InputStream、OutputStream、ByteInputStream、ByteOutputStream、Reader、Writer。
12.代理模式:
给一个对象提供一个代理对象,并由代理对象控制原对象。其实就是加一个中转站。好处是:系统有了客户向原对象提出的请求的控制。
Windows系统的“快捷方式”就是一个代理模式的例子。
角色有:抽象主题角色、代理主题角色、真实主题角色。
java语言中的java.lang.reflect库中有三个类能直接
精心收集
精心编辑
精致阅读
如需请下载!
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案
支持代理模式:Proxy、InvocationHandler、Method。
13.享元模式:
flyWeight。享元模式以共享的方式高效地支持大量的细粒度对象。享元模式能做到共享的关键是区分内蕴状态和外蕴状态。内蕴状态存储在
享元对象内部,可以共享,不受环境影响;而外蕴状态却受环境影响,不能共享,必须由客户端保存,只在需求的时候才传入享元对象内部。
根据所涉及到的享元对象的内部表象,享元模式分为“单纯享元模式”和“复合享元模式”。
单纯享元模式的角色有:抽象享元角色、具体享元角色、享元工厂角色、客户端。
复合享元模式的角色有:抽象享元角色、具体享元角色、复合工厂角色、享元工厂角色、客户端。
此模式的精髓是:为每一种类型(即内蕴对象)的对象只创建一个实例,而不用每次都创建新的对象,这样实例对象就能在外面实现共享。
在设计一个类时,如果想要它支持享元模式,则要将能共享的状态(可以说是属性)与不能共享的状态区分开,即将不能共享的状态剔除,那些不能共享的状态可以做为外蕴对象在使用那
精心收集
精心编辑
精致阅读
如需请下载!
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案
个类时,做为一个参数传进去。另外,这个类的创建过程必须由一个工厂对象加以控制,这个工厂对象应当使用一个列表来保存已经创建出来的对象。当客户端请求一个新对象进,工厂对象首先检查此列表,看是否已经有一个
同状态的对象。如果有,则直接返回此对象;如果没有,则创建一个新对象,并将此对象存入列表。
14.门面模式:
外部与一个子系统的通信必须通过一个统一的门面(facade)对象进行。如:一个保安系统中控制台,通过控制台可以控制所有保安设备。
角色有:门面角色,子系统角色。
15.桥梁模式:
又称为柄体(如一个杯子的手柄)模式或接口模式。图示也像一座桥。
此模式的精髓是:尽量使用合成/聚合,而不是继承关系来达到扩展系统功能的目的。目的是“分离抽象化与实现化”。比抽象工厂模式更好。
如:有二种飞机,客机和货机,Boeing、Airbus、MD都生产这二种飞机,那么如果客户想要买Airbus的客机或Boeing
精心收集
精心编辑
精致阅读
如需请下载!
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 的货机,是不是
要创建出六个对象才行呢?如果使用继承来描述,则要设计六个类,且关系是僵化的,用抽象工厂模式可能好一些,但也要创建出六个对象,而用桥梁模式,则不需要创建六个对象,只需通过合成/聚合的方式就可以办到。即:在客机对象中,根据用户传入的条件(应用“简单工厂
模式”),创建出对应的制造商对象,那么在客户端使用时,就可以使用如“Airbus的客机”的对象。
角色有:抽象化角色,修正抽象化角色,实现化角色,具体实现化角色。
------------------------------
行为模式:
是对在不同的对象之间划分责任和算法的抽象化。是关于类和对象的,也是关于它们之间的相互作用的。分:类的行为模式和对象的行为模式。
类的行为模式:使用继承关系在几个类之间分配行为;
对象的行为模式:使用对象的聚合来分配行为。---
精心收集
精心编辑
精致阅读
如需请下载!
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案
---------------------------16.不变模式:
一个对象的状态在被创建之后就不再变化,这就是所谓的不变模式。即一个类的内部状态创建后,在整个生命周期内不会发生变化。
不变模式分为:弱不变模式、强不变模式(如:String类、Integer类等就是一个强不变类)。
弱不变模式:一个类的实例的状态是不可变化的,但这个类的子类的实例具有可能会变化的状态。(方法与成员变量为私有的)
强不变模式:一个类的实例的状态是不可变化的,且这个类的子类的实例也具有不可变化的状态。(类是final的,或所有方法都是final)
实际上,大多数的享元对象是不变对象,但享元对象允许修改它的内蕴对象,修改后,只要享元对象本身还是可以共享的就可以。
17.策略模式:
在一个系统中,如果有一组算法(系统中的一部分),那么就将每一个算法封装起来,让它们有共同的接口,使得它们可以在使用时互换。
角色有:环境角色,抽象策略角色,具体策略角色。
以下情况可以考虑使用策略模式:
精心收集
精心编辑
精致阅读
如需请下载!
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案
一、如果在一个系统中有很多类,它们之间的区别仅在于它们的行为,那么可以使用策略模式封装它们,使用时选择其一就行。二、一个系统需要动态地在几种算法中选择一种。
与简单工厂模式不同的是:具体在使用什么策略类由客户端指定,而不是由一个工厂方法给出。
优点:
一、可用于管理算法族,恰当地使用继承可以将公共的代码移到父类里面,从而避免写重复的代码。
二、可以避免使用多重条件转移语句。
缺点:
一、客户端必须知道所有的具体策略类,并自行决定使用哪一种策略类。
18.模板方法模式:申明一个抽象类,将部分逻辑以具体方法或构造函数的形式实现,然后申明一些抽象方法来迫使子类实现剩余的逻辑。
模板方法模式是java中最常见的模式之一,如javax.servlet.Servlet及子类就是这个模式的应用。
钩子方法的命名规则是以“do”开头。
19.观察者模式: 又叫做“发布-订阅模式”、“模型-视图模式”、“源-监听器模式”、“从属者模式”。
精心收集
精心编辑
精致阅读
如需请下载!
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案
观察者模式定义一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生改变时,会通知所有的
观察者对象,使它们能够自动更新自己。最常见的观察者模式的例子是java中的事件监听器。
另外,java.util.Observer接口和java.util.Observable类也支持观察者模式,可以直接应用这二个类来产生自己的观察者模式。
角色有:抽象主题角色、具体主题角色、抽象观察者角色、具体观察者角色。
在常见的事件处理模型中,对象分为三种:“事件对象”(从EventObject继承),“事件制造者对象”(即一般的类)及“事件接收者对象”(EventListener)
20.迭代子模式: 此模式又称为:“游标模式”。迭代子模式可以顺序地访问一个聚集中的元素,而不必暴露聚集的内部表象。
在Java语言的聚集框架中,广泛地使用迭代子模式来遍历聚集对象,如Iterator接口就是一个迭代器接口。
优点:迭代子简化了聚集的界面,免将聚集对象直接暴露给用户,且迭代的算法可以独立于聚集角色的变化;
精心收集
精心编辑
精致阅读
如需请下载!
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案
缺点:迭代子的迭代顺序并不一定就是聚集的元素顺序,且迭代子给出的元素没有类型特征。
21.责任链模式: 在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链,“请求”在这个链上传递,直到链上的某一个或一些对象
来处理此“请求”。此模式可以在不影响客户端的情况下动态地组织链和分配责任。如:游戏“击鼓传花”、“Window系统的事件处理机制”。
角色有:抽象处理者、具体处理者。
责任链模式分为:“纯责任链模式”和“不纯的责任链模式”,纯责任链模式就是要求只能且必须由一个处理者处理请求,而不纯的责任链模式 的每一个处理者都可以处理,且只处理一部分,并将请求传递给下一下处理者,或者所有的处理者都不处理请求。
22.命令模式:
又称为“行动模式”或“交易模式”。命令模式把一个请求或一个操作封装到一个对象中,可以提供命令的撤消(Undo)或恢复(Redo)功能。
命令模式是的命令的封装,它把发出命令的责任和
精心收集
精心编辑
精致阅读
如需请下载!
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案
执行命令的责任分割开,委派给不同的对象。
角色有:客户、命令、请求者、接收者。java中的例子:awt中的事件处理机制。
23.备忘录模式: 备忘录对象是一个用来存储另外一个对象内部状态的快照的对象。此模式常常与命令模式和迭代子模式一起使用。
备忘录的用意是在不破坏封装的条件下,将一个对象的状态捕捉住,并存储起来,从而可以在将来合适的时候将这个对象的状态还原。
角色有:备忘录角色、发起人角色、负责人角色。
双重接口:一个类或对象(O)对另外两种类或对象(A、B)分别提供两种不同范围接口,一个宽接口(即A能访问O的所有成员),一个窄接口(即B只能访问
O的公共成员)。这种方法的实现方法是:将O写成A的内部类,同时O实现自一个标识接口I,这样A就能访问O的所有成员,而对B只提供接口I,所
以B只能访问I中定义的方法,也就是只能访问O中很少的方法。
精心收集
精心编辑
精致阅读
如需请下载!
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案
24.状态模式:
又称为状态对象模式。状态模式允许一个对象(环境角色)在其内部状态(内部的状态对象)改变的时候改变其行为(改变为不同的状态对象)。
角色有:抽象状态角色、具体状态角色、环境角色。
与策略模式的区别在于:状态模式的环境角色有明显的状态转移,而策略模式的环境角色的状态是不变的。
分派:根据对象的类型而对方法进行的选择就叫“分派”。静态分派:发生在编译时期。如:重载时对方法进行选择就是一种静态分派。
动态分派:发生在运行时期。根据对象的运行期类型(实际类型)来分派。如:子类对父类的一个方法的覆盖就是一种动态分派。宗量:一个方法所属的对象叫做方法的接收者,方法的接收者与方法参数叫做方法的“宗量”。
单分派:根据一个宗量的类型进行对方法的选择。多分派:根据多于一个的宗量的类型进行对方法的选择。
多重分派:由一系列的单分派组成的分派过程。java.awt.Component中的processEvent()函数就是一个多重分派,即通过参数来判断,进行二次分派。
Java语言支持“静态多分派”和“动态单分派”。
精心收集
精心编辑
精致阅读
如需请下载!
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案
25.访问者模式: 目的是封装一些施加于某种数据结构元素之上的操作。一旦这些操作需要修改,接受这个操作的数据结构则可以保持不变。
访问者模式适用于数据结构相对未定的系统,它把数据结构和作用于数据结构上的操作之间的耦合解脱开,使得操作可以自由地演化。
角色有:抽象访问者、具体访问者、抽象节点、具体节点、结构对象。
使用重载的好处与弊病:使用重载的好处是可以强调这些方法所具有的多态性和分析的一致性。
弊病是尽管它们所使用的参量不同,但是太多的同名方法会使阅读代码的人不容易看清楚不同的重载方法之间的区别。过多地使用重载
会使一个不复杂的系统变得复杂,并导致一些难发现的错误。
所以:初学者不会用;中等程度者到处用;资深的设计师谨慎使用。
26.解释器模式: 给定一个语言之后,解释器模式可以定义出其方法
精心收集
精心编辑
精致阅读
如需请下载!
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 的一种表示,并同时提供一个解释器。如:IE就是一个解释器。
此模式非常常见,有时在设计一个模块的功能时会用到这种模式的思想,比如想提供一个更好的方式或语言让用户使用,而程序员需在程序
中解释这种方式或语言,并将解释后的结果传到解释器的下面的最终程序,目的是让最终程序能识别用户所输入的信息,这就是解释器。
角色有:抽象表达式、终结符表达式、非终结符表达式、环境、客户端。
27.调停者模式: 调停者模式包装了一系列对象相互作用的方式,使得这些对象不必互相明显引用,从而使它们可以较松散地耦合。当这些对象中的某些对象
之间的相互作用发生改变时,不会立即影响到其它的一些对象之间的相互作用。从而保证这些相互的作用可以彼此独立地变化。
如:项目开发中的组长就是一个调停者;WTO贸易体中的WTO组织就是一个调停者;它们让成员之间不关联,只让每个成员与调停者关联。
角色:抽象调停者角色、具体调停者角色、抽象同事类角色、具体同事类角色。
精心收集
精心编辑
精致阅读
如需请下载!
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案
优点:
一、避免了同事对象之间的过度的耦合。使得调停类与同事类可以相对独立地演化。
二、将多对多的相互作用转化为一对多的相互作用。使得对象之间的关系更加易于维护和理解。
缺点:
一、增加了调停者对象的复杂性。
二、调停者类经常充满了各个具体同事类的关系协调代码,而这些代码是不能复用的。
显然,调停者模式为同事对象,而不是调停者对象提供了可扩展性,所以此模式的扩展性是倾斜的。
------------------------------
精心收集
精心编辑
精致阅读
如需请下载!
第二篇:Java设计模式学习心得
Java设计模式学习心得
阅读次数: 1584次 发布时间: 2010-04-10 14:52:13发布人: 网络转载
来源: 网络转载
整个设计模式贯穿一个原理:面对介面编程,而不是面对实现,(面向物件编程应该改爲面向介面编程)。目标原则是:降低耦合,增强灵活性。
一、创建模式
1.设计模式之Factory(工厂方法和抽象工厂)
使用工厂模式就象使用new一样频繁.2.设计模式之Prototype(原型)
用原型实例指定创建物件的种类,並且通过拷贝这些原型创建新的物件。
3.设计模式之Builder
汽车由车轮 方向盘 发动机很多部件组成,同时,将这些部件组装成汽车也是一件複杂的工作,Builder模式就是将这两种情况分开进行。
4.设计模式之Singleton(单态)
保證一个类只有一个实例,並提供一个访问它的全局访问点
二、结构模式
1.设计模式之Facade
可扩展的使用JDBC针对不同的资料库编程,Facade提供了一种灵活的实现。
2.设计模式之Proxy
以Jive爲例,剖析代理模式在用户级别授权机制上的应用
3.设计模式之Adapter
使用类再生的两个方式:组合(new)和继承(extends),这个已经在“thinking in java”中提到过。
4.设计模式之Composite
就是将类用树形结构组合成一个单位。你向别人介绍你是某单位,你是单位元元中的一个元素,别人和你做买卖,相当於和单位做买卖。文章中还对Jive再进行了剖析。
5.设计模式之Decorator
Decorator是个油漆工,给你的东东的外表刷上美丽的顔色。
6.设计模式之Bridge
将“牛郎织女”分开(本应在一起,分开他们,形成两个介面),在他们之间搭建一个桥(动态的结合)
7.设计模式之Flyweight
提供Java运行性能,降低小而大量重复的类的开销。
三、行爲模式
1.设计模式之Template
实际上向你介绍了爲什麽要使用Java 抽象类,该模式原理简单,使用很普遍。
2.设计模式之Memento
很简单一个模式,就是在记忆体中保留原来资料的拷贝。
3.设计模式之Observer
介绍如何使用Java API提供的现成Observer
4.设计模式之Chain of Responsibility
各司其职的类串成一串,好象击鼓传花,当然如果自己能完成,就不要推委给下一个。
5.设计模式之Command
什麽是将行爲封装,Command是最好的说明。
6.设计模式之State
状态是编程中经常碰到的实例,将状态物件化,设立状态变换器,便可在状态中轻鬆切换。
7.设计模式之Strategy
不同演算法各自封装,用户端可随意挑选需要的演算法。
8.设计模式之Mediator
Mediator很象十字路口的红绿灯,每个车辆只需和红绿灯交互就可以。
9.设计模式之Interpreter
主要用来对语言的分析,应用机会不多。
10.设计模式之Visitor
访问者在进行访问时,完成一系列实质性操作,而且还可以扩展。
11.设计模式之Iterator
这个模式已经被用来遍曆Collection中物件。使用频率很高。在Java中无需专门阐述,在大多数场合也无需自己制造一个Iterator,只要将物件装入Collection中,我们就直接可以使用Iterator模式。
第三篇:java设计模式考试题
一选择题:共10分
1.Open-Close原则的含义是一个软件实体(a)
A.应当对扩展开放,对修改关闭
2.是10道选择题第一题考完了
二 简答题 共10分
1.什么是设计模式?
设计模式是从许多优秀软件系统中总结出的成功的可复用的设计方案。
2.设计模式的四个基本要素是什么,以及他们是什么含义?
名称:
问题:
方案:
效果:含义在书上p1
三 画类图
14画出命令模式的类图,并写出关键的代码?
见书上17页
15.画出迭代器模式的类图,并写出关键的代码?、见书上105页
四写代码学一个关于求职中心,通知求职者的问题
这是一个观察者模式,具体看看书
我的书是第五章的书上例题
2.是一个交通工具营销问题;
应该是外观模式;见书上99页,应该就是个
这是我们学校的考试题,2012年
第四篇:题记与后记
题记与后记.txt我都舍不得欺负的人,哪能让别人欺负?
一辈子那么长,等你几年算什么我爱的人我要亲手给她幸福 别人我不放心
我想你的时候我一定要找得到你不许你们欺负他!全世界只有我才可以!放弃你,下辈子吧!后记就是你写完一篇文章后又觉得不完美,就又写一篇补充得文章使得原来得文章没完美。
题记,一般放在正文开头之前,位置特别“抢眼”。好的题记一下子就能抓住阅读者的心,给人留下深刻的印象。对题记的要求较为简单:短短的语句,美美的语言;淡淡的情感,浅浅的哲理。那么,什么样的题记才能令人过目不忘,成为文章的点睛之笔呢?答案只有一个:让题记活画出作文的灵魂!
一、悬念引人入读
题记以悬念的形式出现,能立刻吊起人们阅读的胃口;如果悬念再设置得“精彩”一些,那就犹如一颗石子投向平静的水面,激起人们的阅读欲望,引发想像的美妙意境。例①:以“喝彩”为话题写作文。(2003年北京中考题)
也曾自卑,也曾哀怨,因为我知道你有多丑,可那一刻,我由衷地为你喝彩„„ ——写给残疾的母亲
例②:以“书”为话题写作文。(2003年天津中考题)
一个喜欢读“书”的女孩,一个不喜欢“读书”的女孩。我就是这样一个双色女孩,你愿意倾听双色女孩的蓝色寂寞吗? ——题记
例③:风雨中,(2003年长沙中考题)
那风雨怎么会忘记?闭上眼就会想起;那风雨埋藏在心底,欲倾诉却只能借助纸和笔„„ ——题记
例④:以“盼”为话题写作文。(2003年山东中考题之一)我是差生我怕谁,反正没人注意我。不妨文中抒真情,盼君听我心里话。——写给自己的话
二、真情拨人心弦
作文是用心写出来的,放在“版眼”的题记,只有真正用“心”、用“情”写出来,才能拨动人心弦,引人共鸣。
例⑤:以“交往”为话题作文。(2003年四川中考题)
今天是我的生日,祝福却无语;今天是你的祭日,落泪又无声。权且让我以心做纸,以泪作文,再忆你我相识的点点滴滴吧。——写给知己朋友
例⑥:以“母爱”或“父爱”为话题作文。(2003年浙江宁波中考题)
风筝升天,禁不住丝线缠绵;大雁南飞,依然频频回望。岁月易老,世事易变,流逝的岁月中,不变的是母亲那一生都深情的牵挂。——写给母亲的话
例⑦:以“相信自己”为话题写作文。(2003年河南中考题)
不要抱怨自己的命运,我们都是上帝的宠儿;不要畏惧山外的山,人外的人。相信自己:你就是山外之山,人外之人。——写给昨日自卑的我
例⑧:以“责任”为话题写作文。(2003年广西中考、重庆中考题)
几万年前,人类茹毛饮血;几千年前,人类刀耕火种;几十年前,人类登上月球„„人类在告诉人类:人,需要责任。——题记
三、唱出“反调”出人意料
常言道:水无常态,文无定式。如今呼唤创新精神、激励张扬个性日益成为作文的主旋律。真正意义上的创新,是指善于从不同角度、不同视觉、不同层面去思考同一问题,从而获得不同的感受和体验,丰富作文的内涵并写出独到之新意。当然,题记中的“反调”的要求也是个性与规范的有机统一。例⑨:以“ 的我”为题作文。(2003年广东中考题)嘿嘿!“两面三刀”有什么不好,我就是个地地道道的“两面派”。——我的自画像
例⑩:以“自然”为话题作文。(2003年黑龙江中考题)
我愿做只井底之蛙,那儿清凉又舒爽,那儿隐蔽又安全。来,来,来,请跟我来,跳到井底远离人类。
——一只井底之蛙的劝世格言
四、美佳“题记”辑录
父亲那一跪才使我明白,我与父亲之间缺乏的不是爱,而是沟通,心与心的沟通。——《沟通》题记
地球孕育了生命,生命对于每个人来说都是宝贵、惟
一、公平的。正因为生命如此宝贵,所以我们更应该去关爱它。——《关爱生命》题记
当理想的七彩翅膀拍击着现实的空气时,我进入了一个微妙的、朦胧的、多雨的季节。游过少年时代的梦境,我伫立雨中,17岁的日子有风也有雨,有快乐也有烦恼。——《我的快乐与烦恼》题记
曾经有过许多黄昏,我对着夕阳低吟浅唱;曾经有过数不清的黎明,我迎着朝霞讲诉我的向往。少年时代是如诗如画的岁月,少年时代是放飞琥珀般的梦的季节。——《我的未来不是梦》题记
父亲用母亲般的关怀温暖我湿冷的心;父亲用母亲般的温柔体贴我受伤的心;父亲用母亲般的手抚平我伤裂的心„„ ——《家事》题记
生活是什么?在孩子眼里,生活是快快长大;在大人眼里,生活是赚钱过日子;在老人眼里,生活是健康长寿。
——《生活告诉我》题记
我失去的东西太多了,就连诚实、自信这些人生中最重要的东西,竟然也丢了。我应该将它们拣拾起来,带着它们重新上路。——《寻找失去的东西》题记
若干年前的某一天,我和伙伴们正在天堂玩耍,被稀里糊涂地装进一只天蓝色易拉罐里,从此开始了我的易拉罐人生。——《易拉罐人生》题记
母亲的爱,是一条长长的电话线,无论我走多远,都时时刻刻把我牵挂,它将陪伴我走到永远。
——《母爱》题记
生活中处处充满了风景。你是高山,你就是一道风景,因为你把峻峭和雄伟展示给了人间;你是垂柳,你也是一道风景,因为你把妩媚和风姿展示给了世界。——《我就是一道风景》题记
跳跃,让我学会勇敢;跳跃,使我充满信心;跳跃,在无时无刻撞击着我的心扉;带着我挑战下一次飞跃。
——《笑容,跳跃的奏曲》题记 ●ZWFD?NO.2 作文拟题“四步法”
读原题→→→读提示语→→→读出含义→→→拟作文题 例:第一步:读 原 题——以“歌唱”为话题写作文
第二步:读提示语——所叙之事、所记之人确实值得“歌唱”;所抒之情、所发之感确实发自内心,真切、自然、感人。
第三步:读出含义——对真、善、美的歌颂、赞美 第四步:拟作文题——《我想唱首歌》、《我心中的一支歌》、《真情难忘》 《老师,我想对您说》《希望,就在不远的地方》 《我的未来不是梦》、《那一次,我真感动》、《祖国在我心中》、《我家小店又开张了》 《生活的强者》、《暖流》、《瞧,我们这个班》 《街头漫步》、《师?父?友》„„ 学生习作流行题记后记可取吗
⊙黄少忠
时下,在中小学生平时的作文作业里、考场作文里,经常可以看到在作文标题下、正文前有一句题记,有时甚至是一段题记;在正文后又有一句后记,有时是一段后记,后记又以一段居多。而且这样上有题记下有后记的做法,大有蔚然成风之势。
小学生一篇600字篇幅的文章,中学生一篇800字篇幅的文章,真的那么需要上题记下后记吗?回答当然是否定的。一篇六八百字的文章,字数要求本来就够少的了,而单题记后记就占去了一百左右字。题记后记算不算字数?在实际的评卷中是算进字数的。这样,留给正文的发挥空间显然就更少了。大家都知道,一般情况下,要展示出写作水平,是需要一定的展示空间的。可我们的中小学生朋友为什么这么不珍惜这个写作空间呢?在一篇短文里,为什么会这么流行写题记后记呢?
要解决这个问题,我想有必要先来知道到底在什么情况下才需要写题记后记。纵观一下古今中外的作品,有出现题记后记的大都是一整部大部头的作品,如长篇小说、长篇报告文学、长篇传记、长篇新闻专题报道等。只有在这样的巨著长篇里我们才偶尔能看到。我们还发现,就是这样的巨著长篇,也并不是每部都必有题记后记,确实有需要,对作品正文有辅助作用,才有出现的。而在短短的一篇小小说、散文作品里,我们是很难看到的。翻一翻我们的中小学课文,也是明摆着,有几篇课文有出现题记后记的呢?
既然是不需要,可我们的中小学生朋友为什么会那么热衷题记后记呢?究其原因,其实主要就是我们的学生觉得这样新鲜好玩,而且大有唬人之势。最初是个别学生在文章里尝试运用,而中小学生朋友在这个年龄段是最喜欢模仿尝鲜的,于是,也不管适不适用,一窝蜂地群起效仿。再加上一些刊物刊发出来的学生习作范文也多少有一些,学校语文老师、考试评卷老师对此做法的有意引导和有所偏好,所以一时间,短短的一篇学生习作,上有题记下有后记的做法大行其道。
基于此,学生本人应该老老实实地在文章标题、正文部分苦下功夫才是,写作指导老师、评卷老师也应该集中精力从标题、正文部分去细心评判学生习作的优劣才是,而不应该偏好这些形式上、门面上的东西,要知道,这是花拳绣腿,这是在作秀,有违写作之道。
第五篇:读《水浒》后记九:太公们与年轻一代
《水浒传》读后让笔者哭的死去活来的问题九:太公们与年轻一代
《水浒传》中写了不少太公。
太公们生长于楔子中所说的三登之世,那个时候社会秩序安定,人民生活富足,因而大多属于盛世之民。他们知书明理,安土重迁,对人有同情心。
史家庄的史太公是书中出现的第一个太公。东京八十万禁军教头王进因为不堪高俅的迫害,带着老母亲逃奔边关,途经史家村。当时天色已晚,王进母子错过了住宿旅店的机会,来到史家村求宿。王进怀着忐忑不安的心情求助,并表示愿意缴纳住宿费。史太公马上说:“不妨。如今世上人,哪个顶着房子走哩?”接着,史太公让庄客准备住处,同时安排酒食招待王进母子,还让庄客把王进母亲骑的驴子牵到后槽喂养。第二天一大早,史太公得知王进母亲夜里心绞痛发作疼痛难忍时,马上说:“客人休要烦恼,教你老母且在老夫庄上住几日,我有个医心疼的方,叫庄客去县里撮药来与你老母亲吃,叫他慢慢地将息。”此后,王进母子一直在史家庄又吃又住了很多天。最后,王进过意不去,把一身好武艺传给了史太公的儿子九纹龙史进。从史太公招待王进母子的故事中,我们可以看出,虽然其时上层社会已经腐朽,人与人之间充满了猜忌和提防,但在远离大都市的乡土社会还是古风犹存的,史太公对王进母子无微不至的关怀,正是民间寻常百姓人性淳厚的一种体现。
宋江的父亲宋太公也是书中着墨较多的一位太公。与史太公相比,宋太公似乎更为人情练达。宋江“自幼曾攻经史”,大概年轻时也想走科举之路,后来此路不通才做了吏。北宋时期,吏的日子很难过,稍有不慎,被上级找个茬子就会刺配远恶军州,有时还会连累家人。所以,宋江一到县衙为吏,宋太公就告了他忤逆,然后脱离父子关系,以备不测。实践证明,宋太公确有远见。
宋江杀惜后,藏在自家地窖里。宋太公却拿着当初和宋江脱离父子关系的文书为全家人开脱了关系。当朱仝、雷横带着公人们来宋家搜查时,宋江安排酒饭招待,同时又送了二十两银子给众人。随后,宋太公安排宋江逃亡,并且让宋清一路陪同。分手时,宋太公挥泪不住,尽显慈父风采。宋江在江湖上转了一大圈,带着秦明、花荣等好汉准备上梁山。途中,宋江等人在村间小店里遇到前来送信的石勇。石勇带来的书信说,太公已经因病身故。宋江急匆匆刚回家,却发现宋太公安然无恙,依然活得好好的。接下来,宋太公向宋江解释,之所以诈死让宋江回来,主要是害怕宋江被江湖上的朋友拉下水,成为不忠不义的人。由此看来,宋太公堪称大宋社会的良民。宋江回来后不久,就因为有案底在身别抓捕。其时,因为朝廷册立太子,大赦天下,宋江减罪一等,被判了徙流之罪。在宋江判决期间,宋太公花了大量银子去疏通,终于为宋江买得去江州的机会。江州是经济发达的鱼米之乡,能刺配到那里比到沧州、孟州之类的地方要好得多。为了让宋江在刺配路上少受罪,宋太公还专门请两位押解的公人吃饭,并送了他们不少的银两。宋太公是乡土社会中比较能干的老人,挣下了一份家业,心疼儿子但也没有忘了教育子女走正道,人情练达却又不失厚道。宋江上山后念念不忘忠君报国应该与宋太公的教育有关。
穆家村的穆太公是穆弘、穆春两兄弟的父亲。宋江刺配江州途中,路遇后来也是梁山好汉的薛永。薛永流落在揭阳镇打拳卖艺,因为没有给地头蛇穆春交保护费,没有人敢打赏。过路囚徒宋江对此不知情也不在乎,就给了薛永五两银子,因此得罪了穆春,没有旅店留宿,阴差阳错跑到穆太公庄上求宿。穆太公表现得和史太公对待王进母子一样的热情,让庄客安排宋江和两个公人去门房里休息,并取来饭食招待他们。穆太公非常勤劳,夜里亲自点火查看打麦场以及庄园各处,令宋江大为感慨:“这太公与我父亲一般,件件都要自来照管。这早晚也不肯去睡,琐琐地亲自点看。”宋江正要入睡,穆春吵吵嚷嚷地回来,要哥哥穆弘去抓囚徒宋江和打拳的薛永。穆太公没有告诉儿子庄上来了陌生人,而是教育两个儿子不要整天打打杀杀,应该积些阴德。
孔明、孔亮兄弟也有一个好爸爸孔太公。武松大脑飞云浦后,杀了张都监一家,流落在江湖之上,在小店里打了孔亮,却又醉倒在小溪里,被拿到孔家庄上,巧遇在此避难的宋江。孔太公一连半个月好吃好喝招待武松,还给武松新做一套行者衣服和皂布直裰,临别时赠银50两,虽说主要看在宋江面子上,我们也可以看出孔太公也是一位有情有义的老人家。
当然,也不是所有的太公都是仁义之人,登州毛家庄的毛太公就不是好东西。解珍、解宝兄弟接下了登州知府的杖限文书,在三日内捕获伤人恶虎。老虎中了兄弟俩的药箭,从山上滚到毛太公的庄园里。毛太公贪图赏钱,不但不给老虎,还诬告解氏兄弟上门抢劫,并上上下下打点银子要置二人于死地。为了一点赏银不惜害人性命,这样的老人在古风犹存的乡土社会实属罕见,心肠之歹毒与市井社会中的王婆不相上下。
当然,毛仲义这样黑心的太公在书中属于特例。大多数太公给人的印象都是仁厚、慈祥而又乐善好施。水浒中的太公们生于太平盛世,他们勤俭持家,都攒下了自己的一份家业,对子女们充满了慈爱。
说完了太公,再说他们的年轻一代。
与太公们安于田园生活不同,他们的年青一代则浑身充满了戾气和野心。史进有这么一份家业,想的不是操持家业,减轻父亲的压力,而是整天舞枪弄棒,热衷于暴力。
史进身上刺着九条龙,人称九纹龙。即使在宋代,刺青也是不登大雅之堂的东西。身上有刺青的人在科举或者提拔等方面要受到限制,大将狄青就因为身上有刺青而自卑不已。五代时的郭威为了表示他没有做皇帝的心,曾经说:“世上怎么有刺青皇帝呢?”因此,不少人为了表示对社会不满在身上刺青,以表示与主流价值观的决裂。
宋太公的儿子宋江比史进城府深,但也很不安分,年过三十不成家立业,而是整天热衷于打熬气力,结交黑社会分子,浔阳楼题诗,说什么“他年若得报冤仇,敢笑黄巢不丈夫”,又说“他时若遂凌云志,敢笑黄巢不丈夫”,黄文炳告宋江要造反确实是有依据的。
穆太公、孔太公都是好人,他们的儿子们却都是地头蛇一类的东西。穆家兄弟在揭阳岭收保护费,谁得罪了他们只有死路一条。孔家兄弟在乡间称王称霸,身边不离一二十个大汉做打手。
老一代的太公们都很热爱自己的家园,他们一辈子生与斯长于斯,辛辛苦苦建立了美好家园,与邻里们和谐相处。老人们经常到村口小酒店里喝上两口,生活得有知有味。他们挣下来的家业,到下一代手里往往是逃亡之前被一把火烧得干干净净。
老一辈有温暖的家,年轻一辈则毁掉家流落江湖。宋江为吏时脱离家庭单独住,犯事以后多年流落江湖,没有固定的居所。史进放火烧掉自己的家,到边关寻找师傅未果,上了少华山。穆家兄弟和孔家兄弟最终也都放弃家园上了梁山。这些年轻人都把上山当强盗视为一种有前途的职业。
两代人性格和行为模式差异,说明即将崩溃的大宋社会充满了戾气,而这种戾气与其时上层社会的腐败显然有关。正是上层社会的腐败让年轻一代失去了信心,感到在体制内缺乏发展的机会,从而放弃家园,走上对抗现行体制的不归路。