随笔分类 - Java设计模式
摘要:1、核心意图: 将一个类的接口转换成客户希望的另外一个接口,从而使得原本由于接口不兼容而不能一起工作的类可以一起工作。该模式的目标是通过一个代理(这里是Adapter),在原来的类(Adaptee)和客户(Client)之间进行协调,从而达到兼容的目的。其核心是解决一致性的问题。2、身边实例:在我们实际生活中也很容易看到这方面的例子,比如我们要和一个外国人打交道,例如韩国人,如果我们没有学习过韩语,这个韩国人也没有学习过我们汉语,在这种情况下,我们之间是很难进行直接交流沟通。为了达到沟通的目的有两个方法:1)改造这个韩国人,使其能够用汉语进行沟通;2)请一个翻译,在我们和这个韩国人之间进行语言
阅读全文
摘要:~~分类什么的其实都是浮云~~不要太在意哟~设计模式在粒度和抽象层次上各不相同。由于存在众多的设计模式,所以我们可以用一种方式将它们组织起来。这里,我们根据两条准则对模式进行分类,如下表所示:第一是目的准则,即模式是用来完成什么工作的。模式依据其目的可分为创建型( Creational)、结构型( Structural)、或行为型( Behavioral )三种。创建型模式与对象的创建有关;结构型模式处理类或对象的组合;行为型模式对类或对象怎样交互和怎样分配职责进行描述。第二是范围准则,指定模式主要是用于类还是用于对象。类模式处理类和子类之间的关系,这些关系通过继承建立,是静态的,在编译时刻便
阅读全文
摘要:一、学习装饰着模式1、定义及作用 该模式以对客户端透明的方式扩展对象的功能。2、涉及角色 抽象构件角色:定义一个抽象接口,来规范准备附加功能的类。 具体构件角色:将要被附加功能的类,实现抽象构件角色接口。 抽象装饰者角色:持有对具体构件角色的引用并定义与抽象构件角色一致的接口。 具体装饰角色:实现抽象装饰者角色,负责为具体构件添加额外功能。 3、简单实现 抽象构件角色java 代码:packagecom.pattern.decorator2;/***抽象构件角色*@authorzdw**/publicinterfaceComponent{//默认方法AvoidfunctionA();}具体构件
阅读全文
摘要:简单地说,观察者模式定义了一个一对多的依赖关系,让一个或多个观察者对象监察一个主题对象。这样一个主题对象在状态上的变化能够通知所有的依赖于此对象的那些观察者对象,使这些观察者对象能够自动更新。 一、观察者模式的结构 本模式的类图结构如下: 图1、观察者模式的静态结构可从类图中看清楚。 在观察者模式里有如下的角色: . 抽象主题(Subject)角色:主题角色把所有的观察者对象的引用保存在一个列表里;每个主题都可以有任何数量的观察者。主题提供一个接口可以加上或撤销观察者对象; 图2、抽象主题角色,有时又叫做抽象被观察者角色,可以用一个抽象类或者一个接口实现;在具体的情况下也不排除使用具体类实现。
阅读全文
摘要:一、引子下面是吕振宇大牛的一个例子,个人觉得挺好的,有助于理解Bridge模式的设计目的:设想要绘制一幅图画,蓝天、白云、绿树、小鸟,如果画面尺寸很大,那么用蜡笔绘制就会遇到点麻烦。毕竟细细的蜡笔要涂出一片蓝天,是有些麻烦。如果有可能,最好有套大号蜡笔,粗粗的蜡笔很快能涂抹完成。至于色彩吗,最好每种颜色来支粗的,除了蓝天还有绿地呢。这样,如果一套12种颜色的蜡笔,我们需要两套24支,同种颜色的一粗一细。呵呵,画还没画,开始做梦了:要是再有一套中号蜡笔就更好了,这样,不多不少总共36支蜡笔。再看看毛笔这一边,居然如此简陋:一套水彩12色,外加大中小三支毛笔。你可别小瞧这"简陋"
阅读全文
摘要:类之间的关系1. 种类: Generalization(泛化),Dependency(依赖关系)、Association(关联关系)、Aggregation(聚合关系)、Composition(合成关系)。2. 其中Aggregation(聚合关系)、Composition(合成关系)属于Association(关联关系),是特殊的Association关联关系。3. Generalization(泛化)表现为继承或实现关系(is a)。具体形式为类与类之间的继承关系,接口与接口之间的继承关系,类对接口的实现关系。4. Association关联关系表现为变量(has a )。类与类之间的联接
阅读全文
摘要:java.util包中包含了一系列重要的集合类。本文将从分析源码入手,深入研究一个集合类的内部结构,以及遍历集合的迭代模式的源码实现内幕。下面我们先简单讨论一个根接口Collection,然后分析一个抽象类AbstractList和它的对应Iterator接口,并仔细研究迭代子模式的实现原理。本文讨论的源代码版本是JDK 1.4.2,因为JDK 1.5在java.util中使用了很多泛型代码,为了简化问题,所以我们还是讨论1.4版本的代码。集合类的根接口CollectionCollection接口是所有集合类的根类型。它的一个主要的接口方法是: boolean add(Object c) ad
阅读全文
摘要:一、工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。工厂模式在《Java与模式》中分为三类:1)简单工厂模式(Simple Factory):不利于产生系列产品;2)工厂方法模式(Factory Method):又称为多形性工厂;3)抽象工厂模式(Abstract Factory):又称为工具箱,产生产品族,但不利于产生新的产品;这三种模式从上到下逐步抽象,并且更具一般性。GOF在《设计模式》一书中将工厂模式分为两类:工厂方法模式(Factory Method)与抽象工厂模式(AbstractFactory)。将简单工厂模式(Simple Fa
阅读全文
摘要:类定义:1、被代理接口和实现类:Tank类实现了Moveable接口,能够move()package com.zec.disignmode;public interface Moveable { public void move();}package com.zec.disignmode;import java.util.Random;public class Tank implements Moveable{ @Override public void move() { System.out.println("Tank moving...."); try { Thread
阅读全文
摘要:自从上次project中使用struts1.1以后,对于开源的框架,就再也没有使用过。struts2开始就和webwork没有什么区别了,想了想还是看一下webwork吧,webwork是基于xwork的,而xwork是独立于webcontainer而存在的,那么就从xwork开始。xwork是构筑与command模式的。对于command模式的讲解,请看。http://www.dofactory.com/Patterns/PatternCommand.aspxxwork中command模式中的几个类命令的发出者:ActionProxy命令的传送者:ActionInvaction命令的执行者:
阅读全文
摘要:命令模式:定义:把一个请求或者操作封装在命令对象中。命令模式允许系统使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。 Invoker类 被客户端调用,可以接受命令请求,设计命令队列,决定是否相应该请求,记录或撤销或重做命令请求,记录日志等等.publicclassInvoker{privateCommandcommand;publicvoidsetOrder(Commandcommand){this.command=command;}publicvoidExecuteCommand(){command.ExecuteCommand();}} Comman
阅读全文

浙公网安备 33010602011771号