
设计模式
chatget
这个作者很懒,什么都没留下…
展开
-
策略模式(Strategy Pattern)
策略模式的定义–定义一组算法,将每个算法都封装起来,并且使它们之间可以互换。–策略模式使这些算法在客户端调用它们的时候能够互不影响地变化策略模式的意义–策略模式使开发人员能够开发出由许多可替换的部分组成的软件,并且各个部分之间是弱连接的关系。–弱连接的特性使软件具有更强的可扩展性,易于维护;更重要的是,它大大提高了软件的可重用性策略模式的组成–抽象策略角色:策略类,通常由一个接口或者抽象类实现–具体策略角色:包装了相关的算法和行为–环境角色:持有一个策略类的引用,最终给客户端调用的。策略模式的实现–策略模式原创 2011-05-10 11:23:00 · 453 阅读 · 0 评论 -
装饰模式
装饰模式:以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案,注意是对象,不像继承,继承是对类的扩展,是静态的.装饰模式可以在不创造更多子类的情况下,将对象的功能加以扩展。装饰模式把客户端的调用委派到被装饰类。装饰模式的关键在于这种扩展完全是透明的。这样客户端对象就可以以和真实对象相同的方式和装饰对象交互。即对于客户端来说,它都只是个输入流或者是输出流.装饰模式的角色:–抽象构件角色(Component):给出一个抽象接口,以规范准备接收附加责任的对象。OutPutStream–具体构件角色(Co原创 2011-05-15 07:58:00 · 459 阅读 · 0 评论 -
观察者模式
观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,让他们能够自动更新自己任何一个模式都是离不开角色的,这里也会有几种角色:–抽象主题角色:把所有对观察者对象的引用保存在一个集合中,每个抽象主题角色都可以有任意数量的观察者。抽象主题提供一个接口,可以增加和删除观察者角色。一般用一个抽象类或接口来实现。public interface Watched{ public void addWatcher(Watcher watcher)原创 2011-05-14 00:07:00 · 336 阅读 · 0 评论 -
适配器模式
•在软件系统中,由于应用环境的变化,常常需要将“一些现存的对象”放在新的环境中应用,但是新环境要求的接口是这些现存对象所不满足的。那么如何应对这种“迁移的变化”?如何既能利用现有对象的良好实现,同时又能满足新的应用环境所要求的接口?这就是本文要说的Adapter 模式。新环境如测试中用的testXXX方法,现存对象就是junit框架中原本有的东西将一个类的接口(Adaptee)转换成客户希望的另外一个接口(Adapter)。Adapter模式使得原本由于接口不兼容(Target和Adaptee不兼容,不在一原创 2011-05-24 18:03:00 · 406 阅读 · 0 评论 -
命令模式(Command)
命令模式的意图:"将一个请求封装成一个对象,从而使你可用不同的请求对客户进行参数化,对请求进行排队或记录请求日志..."Command模式告诉我们可以为一个操作生成一个对象并给出它的一个execute方法!也即:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。命令模式的构成1 客户角色:创建一个具体命令对象,并确定其接收者2 命令角色:声明一个给所有具体命令类的抽象接口。这是一个抽象角色,通常由一个接口或抽象类实现3 具体命令角色:定义一个接原创 2011-05-24 19:59:00 · 388 阅读 · 0 评论 -
简单工厂模式
简单工厂的意图:简单工厂模式是类的创建模式,又叫做静态工厂方法(Static Factory Method)模式。简单工厂模式是由一个工厂对象决定创建出那一种产品类的实例。通常它根据自变量的不同返回不同的类的实例。适用性:简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建出哪一个产品类的实例。工厂:我叫他生产出一个产品给我就行了,我不需要管他是怎么样生产的.我们自己不用生产了,让工厂给我们生产.简单工厂模式的构成•工厂类(Creator)角色:担任这个角色的是简单工厂模式的核心,含有与应用紧密原创 2011-05-26 19:11:00 · 491 阅读 · 0 评论 -
模板方法
定义一个操作中的算法骨架,而将一些步骤延伸到子类中去,使得子类可以不改变一个算法的结构,即可重新定义该算法的某些特定步骤。这里需要复用的是算法的结构,也就是步骤,而步骤的实现可以在子类中完成步骤定义好了,如买菜,洗菜,做菜,洗碗,这些步骤是不能倒的.去哪买,怎么洗菜父类是不管的.他规定了算法的步骤.模板方法模式的组成–父类角色:提供模板。–子类角色:为模板提供实现。父类:public abstract class AbstractClass { public void templete(){//算法的骨架,原创 2011-05-24 16:04:00 · 402 阅读 · 0 评论 -
组合模式
组合模式有时候又叫做部分-整体模式,它使我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以像处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦将对象组合成树形结构以表示“部分-整体”的层次结构。Composite模式使得用户对单个对象和组合对象的使用具有一致性组合模式的角色:Component(抽象构件接口)–为组合的对象声明接口–在某些情况下实现从此接口派生出的所有类共有的默认行为–定义一个接口可以访问及管理它的多个子部件Leaf(叶部件)–在组合中表示叶节点对象,叶原创 2011-05-24 21:02:00 · 423 阅读 · 0 评论 -
代理模式
代理分为静态的和动态的代理代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用,如中介公司可以给你找房子,房东是目标对象,中介公司他除了给你找房子之外他还可以做一些原创 2011-05-11 22:00:00 · 426 阅读 · 0 评论