
设计模式(初学)
beimuaihui
只为一个理由
展开
-
Abstract factory 模式
意图: 提供一个创建一系列相关或相互依赖的对象接口,而不需要具体指定它们的类。 类图: 时序图: 抽象工厂模式 一、定义 提供创建一系列相关或相互依赖的对象的接口,而无需指定他们具体的类。二、个人理解 抽象工厂模式是封装一组相互独立的工原创 2008-09-26 18:02:00 · 1051 阅读 · 1 评论 -
职责链模式
职责链模式1.定义 使多个对象都有机会处理请求,从而避免了请求对象与处理对象之间的耦合关系。将这些对象形成一条链,并沿着这条链传递请求,直到有一个对象处理它为止。2.个人理解 处理请求的对象是拥有共同接口的链表(《数据结构》),并且往往有先后处理的顺序。将一个要求处理的请求发送给最低的处理对象,如果这个处理对象不能完成,则逐渐传递,直到有一个处理对象处理为止。3.结构原创 2008-10-07 18:16:00 · 558 阅读 · 0 评论 -
10.7,今天暂停设计模式,2009年元旦完成其它七个设计模式
总感觉设计模式没有给我带来太大的技术进步或惊喜,也有可能由于我的道法不够。 转战web 2.0及企业应用开发。 可能会是解决dojo,或zend framework源代码分析。 其它的七个模式为: interpreter(解释器),iterator(选代器),MEDIATOR(中介者),MEMENTO(备忘录),STATE(状态),STRATEgy(策略模式),VISITOR(访问者原创 2008-10-07 18:27:00 · 797 阅读 · 2 评论 -
解释器模式(interpret pattern)
import java.util.*;interface Expression{ public Stack InterpretAction(Stack exp);}class MinusInterpret implements Expression { @Override public Stack InterpretAction(Stack exp) { i转载 2009-03-02 17:33:00 · 678 阅读 · 0 评论 -
Memento Pattern(备忘录模式)
package memento;import java.util.*;class Origin { private String state; public Memento saveMemento(){ return new Memento(this.state); } public void restoreState(Object o) { i转载 2009-03-05 16:32:00 · 451 阅读 · 0 评论 -
Iterator Pattern(迭代器模式)
php已经有Iterator接口对应着迭代器模式<?php class MyIterator implements Iterator{ private $var = array(); public function __construct($array) { if (is_array($array)) { $t转载 2009-03-04 15:26:00 · 455 阅读 · 0 评论 -
Mediator Pattern(中介者模式)
package mediator;class Mediator { private String message; private boolean isBusy=false; public synchronized void setMessage(Sender m,String msg) throws InterruptedException { while转载 2009-03-05 14:36:00 · 571 阅读 · 0 评论 -
Strategy Pattern(策略模式)
package strategy; interface Strategy{ int execute(int a,int b);} class StrategyAdd implements Strategy{ public int execute(int a, int b) { return a+b; } } class StrategyMi转载 2009-03-08 15:20:00 · 474 阅读 · 0 评论 -
State Pattern(状态模式)
package state;interface TurnstileState { void coint(Turnstile t); void pass(Turnstile t);}class LockedTurnstileState implements TurnstileState{ public void coint(Turnstile t) { t.setS转载 2009-03-07 21:09:00 · 547 阅读 · 0 评论 -
Visitor Pattern(访问者模式)
package visitor;import java.util.ArrayList;import java.util.List;abstract class carElement{ public abstract void accept(carVisitor v);}interface carVisitor{ void visit(carBody body);转载 2009-03-08 16:20:00 · 507 阅读 · 0 评论 -
享元模式
享元模式1.定义 运用共享技术有效地支大量细粒度的对象。2.个人理解 由于大量的细粒度的对象比较占有内在,如一个文档可能有10000个字母A,它们都有一个标识符,且其它的的属性如:font family,可以通过外部参数传递。 那么我们就可以把这些对象共享成一个地址上的对象。3.结构图 4.实现/** * this source code can be原创 2008-10-07 18:16:00 · 393 阅读 · 0 评论 -
桥接模式
桥接模式1.定义 使抽象部分与它的实现部分分离,使它们都可以独立地变化。2.个人理解 将对象实现高层的抽象并将它的实现独立成一个接口,这样它们可以独立扩展,具体的类就可以单独引用相应的具体的实现。3.结构图 4.实现 /** * this program implement linux drawing rectangle(including four line)原创 2008-10-07 18:15:00 · 468 阅读 · 0 评论 -
工厂方法模式
工厂方法模式1. 定义 定义一个创建对象的接口,而让子类来决定实例化具体的类。2.个人理解 主要是framework提供了多个实现方法来让客户来决定哪一个类来被实例化。3.类图 4.代码 abstract class Pizza{ abstract function GetPrice(); public static原创 2008-09-26 18:06:00 · 574 阅读 · 2 评论 -
生成器模式
生成器模式1.定义 将一个复杂的对象的构建与其表示分离,使相同的构建过程得到不同的表示。2.个人理解。 就是一个产品可能分步骤来完成各个块,且每个块的构建过程都可以有选择的余地。最终得了一个想要的产品。(如DIY组机)。 就点像函数模板(Template Method patter).只是人各有志。Builde原创 2008-09-26 18:07:00 · 691 阅读 · 0 评论 -
设计模式简介
设计模式 设计模式主要是使不稳定的依赖于相对稳定、具体依赖于相对抽象,避免会引起麻烦的紧耦合,以增强软件设计面对并适应变化的能力。敏捷开发人员不会对一个庞大的预先设计应用那些原则和模式,而是在一次次的选代中,力图使代码以及代码所表达的设计保持干净。一、设计模式的原则 设计模式是为了重用代码,增加可维护性。它的原则有: 1.开闭原则:对修改关闭,对扩展开放。 个人原创 2008-09-26 18:03:00 · 657 阅读 · 0 评论 -
原型模式
原型模式1.定义 用原型实例来指定创建对象的种类,并且通过拷贝原型创建新的对象。2.个人理解 复制一个对象实例。包括这个对象的所有属性。使得被复制的对象及原型拥有相同的类型,但不是指向同一个对象。 复制对象时,要注意该对象的属性是深复制还是浅复制。如果属性是值类型,往往是浅复制,如果是引用类型,往往是深复制。3.实现 php5自带clone 方法,但复制对象属原创 2008-10-07 18:02:00 · 543 阅读 · 0 评论 -
单例模式
单例模式 1.定义 保证一个类仅有一个实例,并且提供一个访问它的全局访问点。2.个人理解 有些类为了节省开销,往往在整个系统中只有一个实例(全局对象),每个客户端访问它都是相同的对象。 实现时往往将构造器变为私有函数,此时只有类的内部函数才可以访问私有构造函数并生成新的实例。然后提供一个访问指向自己的私有的静态实例的公开方法。 在多线程编程时,往往先加锁,使其原创 2008-10-07 18:02:00 · 494 阅读 · 0 评论 -
适配器模式
适配器模式1.定义 将一个类的接口转成客户想要的接口,使得原本不兼容接口可以一起工作。2.个人理解 客户想要一些接口,现有的接口往往跟客户想要的接口不相符,或现有的接口太容易变化啦,往往提供一个适配器以达到客户的需求。 满足了依赖于的抽象的原则(抽象的适配器)。3.类图(对象适配器) 4.实现 abstract class target{ public原创 2008-10-07 18:14:00 · 488 阅读 · 0 评论 -
组合模式
组合模式1.定义 组合对象用树型结构层次来表示部分整体的关系。组合对象使单个的对象及整体对象的使用具有一致性。 compose objects into tree structures to represent part-wholehierarchies. Composite lets clients treat individual objects andcompositio原创 2008-10-07 18:15:00 · 521 阅读 · 0 评论 -
命令模式
命令模式1.定义 将一个请求封装在一个对象中,从而使你可用不同的请求对象来对客户进行参数化。将这些请求排列或记录日志,支持撤消或重做的功能。2.个人理解 对命令的发送者和接收者解耦。使得发送者不需要知道接受者的任何接口。对象形为的一个封装。3.结构图 4.实现 package command;import java.util.ArrayList;import java.util原创 2008-10-07 18:16:00 · 536 阅读 · 0 评论 -
模板方法模式
模板方法模式1.定义 定义一个操作的算法的骨架,而将一些步骤延迟到子类中。Template Method模式使子类在不改变算法结构的情况下重定义某些步骤。2.个人理解 一个封闭变化原则:一个算法,有许多步骤,其中一些是不变的,一些是经常变的。将那些经常变的算法变成虚构函数,而在子类中实现。3.结构图 4.实现代码 abstract class Tree { public原创 2008-10-07 18:17:00 · 516 阅读 · 0 评论 -
设计模式初学结束
计划下一步注重于实际项目的源代码查看或开发。 有时可以略看一下AOP,dependence inject. 有感悟时会随时更改所学的设计模式。原创 2009-03-08 17:05:00 · 472 阅读 · 0 评论