随笔分类 - [9] 设计模式
摘要:迭代器模式:提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示。 Java例子 package i_IteratorPattern_CompositePattern; import java.util.Iterator; public interface Menu { Iterat
阅读全文
摘要:模板方法模式:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。 package h_TemplateMethodPattern; public abstract class CaffeineBeverage { fin
阅读全文
摘要:外观模式:提供了一个统一的接口,用来访问子系统中的一群接口,外观定义了一个高层接口,让子系统更容易使用。意图是提供一个简单的接口。 **
阅读全文
摘要:命令模式,将方法调用封装起来了。 Java例子: package f_CommandPattern._01_demo; public interface Command { public void execute(); public void undo(); } // package f_Comma
阅读全文
摘要:观察者模式:定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,他的所有依赖者都会收到通知并自动更新。 Java代码 package b_ObserverPattern._02_weatherstation; public interface Subject { public void re
阅读全文
摘要:装饰者模式:动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。 UML: Java代码 package c_DecoratorPattern._01_coffe; /** * 饮料 */ public abstract class Beverage { String de
阅读全文
摘要:策略模式:定义了算法簇,分别封装起来,让它们之间可以相互替换,此模式让算法的变化独立于使用算法的客户。 java实现: package a_StrategyPattern._01_duck; public abstract class Duck { protected FlyBehavior fly
阅读全文
摘要:单件模式,又称单例模式 /** * 单例,版本一,此版本多线程下有问题。不要使用 */ public class Singleton00 { private Singleton00() { } private static Singleton00 uniqueInstance; public sta
阅读全文
摘要:目的:为了减少应用程序与具体类之间的依赖(松耦合),将对象的创建进行封装。所有的工厂都是用来封装对象的创建。 - 简单工厂模式。(简单工程其实不是一个设计模式,反而像是一种编程习惯)- 工厂方法模式:定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。- 抽象
阅读全文
摘要:单例模式也称为单件模式、单子模式,可能是使用最广泛的设计模式。其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。有很多地方需要这样的功能模块,如系统的日志输出,GUI应用必须是单鼠标,MODEM的联接需要一条且只需要一条电话线,操作系统只能有一个窗口管理器,一台
阅读全文