工厂模式
简单工厂
通过参数动态创建继承自同一接口的类。
public class ShapeFactory { //使用 getShape 方法获取形状类型的对象 public Shape getShape(String shapeType){ if(shapeType == null){ return null; } if(shapeType.equalsIgnoreCase("CIRCLE")){ return new Circle(); } else if(shapeType.equalsIgnoreCase("RECTANGLE")){ return new Rectangle(); } else if(shapeType.equalsIgnoreCase("SQUARE")){ return new Square(); } return null; } }
工厂方法
定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。让其子类实现工厂接口,返回的也是一个抽象的产品。
public class CircleShapeFactory implement ShapeFactory { //使用 getShape 方法获取形状类型的对象 public Shape getShape(){ return new Circle(); } } public class RectShapeFactory implement ShapeFactory { //使用 getShape 方法获取形状类型的对象 public Shape getShape(){ return new Rectangle(); } }
抽象工厂
围绕一个超级工厂创建其他工厂。
public class JinanPieFactory extends AbstractPieFactory { @Override public Pie makeApplePie(){ return new SweetApplePie(); } @Override public Pie makeBananaPie() { return new SweetBananaPie(); } } public class YueyangPieFactory extends AbstractPieFactory { @Override public Pie makeApplePie(){ return new XianApplePie(); } @Override public Pie makeBananaPie() { return new XianBananaPie(); } } public class FactoryProducer { public static AbstractPieFactory getFactory(String choice){ if(choice.equalsIgnoreCase("JINAN")){ return new JinanPieFactory(); } else if(choice.equalsIgnoreCase("YUEYANG")){ return new YueyangPieFactory(); } return null; } }