1、 public static AbstractPay getPayMethod(String type) return new CashPay(); /根据参数创建具体产品 return new CreditcardPay();工厂方法模式工厂方法模式包含如下角色:抽象产品具体产品抽象工厂ConcreteFactory:具体工厂抽象工厂类代码:public abstract class PayMethodFactory public abstract AbstractPay getPayMethod();具体工厂类代码:public class CashPayFactory extends P
2、ayMethodFactory public AbstractPay getPayMethod()客户类代码片段:PayMethodFactory factory;AbstractPay payMethod;factory=new CashPayFactory();payMethod =factory.getPayMethod();payMethod.pay(); 抽象工厂模式抽象工厂模式包含如下角色:AbstractFactory:AbstractProduct:抽象工厂类的典型代码如下:public abstract class AbstractFactory public abstrac
3、t AbstractProductA createProductA(); public abstract AbstractProductB createProductB();具体工厂类的典型代码如下:public class ConcreteFactory1 extends AbstractFactory public AbstractProductA createProductA() return new ConcreteProductA1(); public AbstractProductB createProductB() return new ConcreteProductB1();
4、抽象产品类:Public abstract class AbsractProductA()/每个产品共有的方法Public void shareMethod()/每个产品相同方法,不同实现Public abstract void doSomething();具体产品A1:Public class ProductA1 extends AbstractProductAPublic void doSomething()System.out.println(“产品A1的实现方法”)具体产品A2:Public class ProductA2 extends AbstractProductASystem.
5、out.println(“产品A2的实现方法”)产品等级1:Public class Creator1 extends AbsractCreator/只生产产品等级为1的A产品Public AbstractPorductA creatProductA()Return new ProductA();/只生产产品等级为1的B产品Public AbstractProductB creatProductB()Return new ProductB();原型模式原型模式包含如下角色:Prototype:抽象原型类ConcretePrototype:具体原型类Client:客户类Public Protot
6、ypeClass clone()overridePublic PrototypeClass prototypeClass=null;TryprototypeClass=(prototypeClass)super.clone();catch(CloneNotSupportedException e)Return prototypeClass;单例模式单例模式的实现代码如下所示:public class Singleton private static Singleton instance=null; /静态私有成员变量 /私有构造函数 private Singleton() /静态公有工厂方法,
7、返回唯一实例 public static Singleton getInstance() if(instance=null) instance=new Singleton(); return instance;适配器模式类适配器对象适配器适配器模式包含如下角色:Target:目标抽象类Adapter:适配器类Adaptee:适配者类典型的类适配器代码:public class Adapter extends Adaptee implements Target public void request() specificRequest();典型的对象适配器代码:public class Adap
8、ter extends Target private Adaptee adaptee; public Adapter(Adaptee adaptee) this.adaptee=adaptee; adaptee.specificRequest();桥接模式桥接模式包含如下角色:Abstraction:抽象类RefinedAbstraction:扩充抽象类Implementor:实现类接口ConcreteImplementor:具体实现类 典型的实现类接口代码:public interface Implementor public void operationImpl();典型的抽象类代码:pu
9、blic abstract class Abstraction protected Implementor impl; public void setImpl(Implementor impl) this.impl=impl; public abstract void operation();典型的扩充抽象类代码:public class RefinedAbstraction extends Abstraction public void operation() /代码 impl.operationImpl();外观模式观模式包含如下角色:Facade: 外观角色SubSystem:子系统角色
10、典型的外观角色代码:public class Facade private SubSystemA obj1 = new SubSystemA(); private SubSystemB obj2 = new SubSystemB(); private SubSystemC obj3 = new SubSystemC(); public void method() obj1.method(); obj2.method(); obj3.method();代理模式代理模式包含如下角色:Subject: 抽象主题角色Proxy: 代理主题角色RealSubject: 真实主题角色抽象主踢类:Publi
11、c interface Subject/定义一个方法Public void request();Public class RealSubject implements SubjectPublic void request()典型的代理类实现代码:public class Proxy implements Subject private RealSubject realSubject = new RealSubject(); public void preRequest() . preRequest(); realSubject.request(); postRequest(); public
12、void postRequest() 命令模式命令模式包含如下角色:Command: 抽象命令类ConcreteCommand: 具体命令类Invoker: 调用者Receiver: 接收者Client:典型的抽象命令类代码:public abstract class Command public abstract void execute();典型的调用者代码:public class Invoker private Command command; public Invoker(Command command) mand=command; public void setCommand(Co
13、mmand command) /业务方法,用于调用命令类的方法 public void call() command.execute();典型的具体命令类代码:public class ConcreteCommand extends Command private Receiver receiver; public void execute() receiver.action();典型的请求接收者代码:public class Receiver public void action() /具体操作迭代器模式迭代器模式包含如下角色:Iterator: 抽象迭代器ConcreteIterator:
14、 具体迭代器Aggregate: 抽象聚合类ConcreteAggregate: 具体聚合类实例:电视机遥控器 电视机遥控器就是一个迭代器的实例,通过它可以实现对电视机频道集合的遍历操作,本实例我们将模拟电视机遥控器的实现。观察者模式观察者模式包含如下角色: 目标ConcreteSubject: 具体目标Observer: 观察者ConcreteObserver: 具体观察者典型的抽象目标类代码如下所示:public abstract class Subject protected ArrayList observers = new ArrayList(); public abstract v
15、oid attach(Observer observer); public abstract void detach(Observer observer); public abstract void notify();public class ConcreteSubject extends Subject public void attach(Observer observer) observers.add(observer);典型的具体目标类代码如下所示: public void detach(Observer observer) observers.remove(observer); pu
16、blic void notify() for(Object obs:observers) (Observer)obs).update();典型的抽象观察者代码如下所示:public interface Observer public void update();典型的具体观察者代码如下所示:public class ConcreteObserver implements Observer public void update() /具体更新代码客户端代码片段如下所示:Subject subject = new ConcreteSubject();Observer observer = new
17、ConcreteObserver();subject.attach(observer);subject.notify();策略模式策略模式包含如下角色:Context: 环境类Strategy: 抽象策略类ConcreteStrategy: 具体策略类不使用策略模式的代码:public class Context public void algorithm(String type) . if(type = strategyA) /算法A else if(type = strategyB /算法BstrategyC /算法C重构之后的抽象策略类:public abstract class Abs
18、tractStrategy public abstract void algorithm();重构之后的具体策略类:public class ConcreteStrategyA extends AbstractStrategy public void algorithm()重构之后的环境类: private AbstractStrategy strategy; public void setStrategy(AbstractStrategy strategy) this.strategy= strategy; strategy.algorithm();客户端代码片段:Context context = new Context();AbstractStrategy strategy;strategy = new ConcreteStrategyA();person.setStrategy(strategy);person.algorithm();
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1