Java常见设计模式应用场景
1、抽象工厂
应用场景:封装变化点。创建一系列相互依赖的对象。
在软件系统中,经常面临着 “一系列相互依赖的对象”的创建工作;同时由于需求的变化,往往存在更多系
列对象的创建工作。如何应对这各变化如何绕过常规的对象创建方法(new),提供一种“封装机制”来避免
客户程序和这种 “多系列具体对象创建工作”的紧耦合。
public abstract Class AbstractFactory{
//创建一系列相互关联的对象如游戏场景中相互关联的Road,Building,Tunnel,Jungle对象
public abstract ProductA createProductA();
public abstract ProductB createProductB();
/
}
//多系列体现在ConcreteFactoryA,ConcreteFactoryB这些具体工厂创建该系列下的多个相互关联的对
象
public class ConcreteFactoryA extends AbstractFactory{
//具体创建ProductA,ProductB 的哪个子类再这里指定,如
//这里相互关联的对象体现在ProductA1和ProductB1够成第一种风格
public ProductA createProductA(){
return new ProductA1();
return new ProductB1();
}
}
public class ConcreteFactoryB extends AbstractFactory{
//具体创建ProductA,ProductB 的哪个子类再这里指定,如
public ProductA createProductA(){
return new ProductA2();
return new ProductB2();
}
}
public abstract class ProductA{
//其子类是ProductA1,ProductA2
//定义一些接口;
public void someMethod();
//
}
public abstarct class ProductB{
//其子类是ProductB1,ProductB2
//定义一些接口;
public void someMethod();
//
}
public class Test{
ProductA a;
ProductB b;
public static void main(String[] args){
//客户端要创建不同风格的游戏场景(多系列)
AbstractFactory factory new ConcreteFactoryA();
ProductA a factory.createProductA();
ProductB b factory.createProductB();
play();
//创建另一种风格的游戏场景,只须更改ConcreteFactoryB();
//
//AbstractFactory factory new ConcreteFactoryA();
//ProductA a factory.createProductA();
//ProductB b factory.createProductB();
//play();
}
public static void play(){