
设计模式
bolan392
这个作者很懒,什么都没留下…
展开
-
一、策略模式
1.什么是策略模式Strategy 策略模式定义了算法家族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。策略模式就是用来封装算法的,在实践中,可以用它来封装任何类型的规则,只要在分析过程中听到需要在不同时间应用不同的业务规则,就可以考虑使用策略模式处理这种变化的可能性。 2.为什么要使用策略模式? 策略模式是定义一系列...原创 2011-11-09 10:45:39 · 89 阅读 · 0 评论 -
十六、组合模式
组合模式(composite),将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。 当需要体现整体与部分层次的结构时,当希望用户可以忽略组合对象与单个对象的不同,统一地使用组合结构中的所有对象时,就应该考虑用组合模式了。...2011-11-23 09:05:51 · 112 阅读 · 0 评论 -
十五、备忘录模式
备忘录(Memento):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。备忘录模式主要用于还原或可撤销时。...2011-11-23 08:54:49 · 102 阅读 · 0 评论 -
十四、适配器模式
适配器模式(adapter),将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。2011-11-23 08:45:10 · 171 阅读 · 0 评论 -
十三、状态模式
状态模式,当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类当中。 Statepublic abstract class State { public abstract void handle(Context co...2011-11-18 14:19:41 · 113 阅读 · 0 评论 -
十二、观察者模式
观察者模式,定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使他们能够自动更新自己。 Subjectpublic class Subject { private List<Observer> observers = new ArrayList<Observer>...2011-11-18 10:14:18 · 90 阅读 · 0 评论 -
十一、建造者模式
1.什么是建造者模式 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 2.为什么要使用建造者模式 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。如果用了建造者模式,那么用户只需要指定需要建造的类型就可以得到它们,而具体建造的过程和细节就不需要知道了。 ...2011-11-17 09:30:24 · 94 阅读 · 0 评论 -
十、外观模式
1.什么是外观模式 Facade 为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 2.为什么要使用外观模式 层与层之间建立外观模式,这样可以为复杂的子系统建立一个简单的接口,使得耦合大大降低,减少依赖。 3.怎样使用外观模式 Facade类public ...2011-11-16 09:13:30 · 78 阅读 · 0 评论 -
九、模板方法模式
1.什么是模板方法模式 定义一个操作中算法的骨架,而将一些步骤延迟到子类中。 2.为什么要用模板方法模式 模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 模板方法模式是通过把不变行为搬迁的超类,去除子类中的重复代码来体现它的优势,它提供了一个很好的代码复用平台。 3.怎样用模板方法模式 ...2011-11-15 13:41:22 · 79 阅读 · 0 评论 -
八、原型模式
1.什么是原型模式 Prototype 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。原形模式其实就是从一个对象再创建另外一个可定制的对象;而且不需要知道任何创建的细节。 2.为什么要使用原型模式 使用原型模式克隆对象的方法,即隐藏了对象创建的细节,又对性能是大大的提高。注意对象的复制有潜复制和深复制两种,潜复制是值对象...2011-11-11 14:45:11 · 78 阅读 · 0 评论 -
七、工厂方法模式
1.什么是工厂方法模式 Factory Method 工厂方法模式,定义一个用于创建对象的接口,让子类决定实例化哪个类。工厂方法使一个类的实例化延迟到其子类。 2.为什么要使用工厂方法模式 在简单工厂方法中,如果添加新的创建功能,可能要修改工厂类,这就违背了开发-封闭原则,而工厂模式解决了这个问题。 3.怎样使用工厂方法模式 ...2011-11-11 14:20:41 · 84 阅读 · 0 评论 -
六、代理模式
1.什么是代理模式 Proxy 为其他对象提供一种代理以控制这个对象的访问。 2.为什么要使用代理模式 第一,远程代理,为一个对象在不同的地址空间提供局部代表。这样可以隐藏一个对象存在于不同地址空间的事实,WebService就使用的代理。 第二,虚拟代理,是根据需要创建开销很大的对象,通过它来存放实例化需要很长时间的真是对象。这样可以...2011-11-11 10:19:48 · 75 阅读 · 0 评论 -
五、装饰模式
1.什么是装饰模式 装饰模式(Decorator),动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更加灵活。装饰模式是为已有功能添加更多功能的一种方式。 2.为什么使用装饰模式 当系统需要新功能的时候,是向旧的类中添加新的代码。这些新的代码通常装饰了原有类的核心职责或主要行为,这种做法增加了主类的复杂度。而装饰模式可以很好的解决这个问题,它把每个需要装饰的...2011-11-10 14:29:14 · 73 阅读 · 0 评论 -
四、依赖倒转原则
1.什么是依赖倒转原则 依赖倒转原则,即抽象不应该依赖细节,细节应该依赖抽象。要针对接口编程,不要针对实现编程。高层模块不应该依赖低层模块,两个都应该依赖抽象。 2.为什么要遵循依赖倒转原则 ...2011-11-09 14:25:16 · 99 阅读 · 0 评论 -
三、开放-封闭原则
1.什么是开发封闭原则 开放-封闭原则(Open-Closed Principle),是说软件实体(类、模块、函数等等)应该可以扩展,但是不可修改。 2.为什么要遵循开放-封闭原则 在做任何系统的时候,需求都是在不断变化的,为了在需求发生变化时,设计的软件可以相对容易修改,设计对于需求的变化可以相对稳定,从而使得系统可以在第一个版本后不断推出新的版本。...2011-11-09 14:08:43 · 99 阅读 · 0 评论 -
二、单一职责原则
1.什么是单一职责原则SRP 单一职责原则,就一个类而言,应该仅有一个引起它变化的原因。 2.为什么要遵守单一职责原则 如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当发生变化时,设计会遭受到意想不到的破坏。...2011-11-09 13:47:51 · 84 阅读 · 0 评论 -
十八、单利模式
单例模式(Singleton),保证一个类仅有一个实例,并提供一个访问它的全局访问点。 在多线程环境下使用单例模式时,要考虑到加锁,要保证一个线程进入代码的临界区时,另一个线程不进入临界区。也可以使用双重锁定的方式,先判断该实例是否为null,如果为null,则加锁后再次判断是否为null,如果为null,则创建实例。同时,也可以采用将该实例声明为静态成员,也可以解决线程安全的...2011-11-23 09:40:43 · 97 阅读 · 0 评论