抽象工厂模式

来源:互联网 发布:淘宝发布宝贝教程2016 编辑:程序博客网 时间:2024/06/03 22:04

抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。

/** * 创建一个接口 * @author fan * */public interface Car {  public void driver();}/** * 接口实现类 * @author fan * */public class Bc implements Car{    @Override    public void driver() {        // TODO Auto-generated method stub        System.out.println("driver Bc");    }/** * 接口实现类 * @author fan * */public class Bmw implements Car{    @Override    public void driver() {        // TODO Auto-generated method stub        System.out.println("driver bmw");    }}public interface Color {    public void print();}public class Green implements Color {    @Override    public void print() {        // TODO Auto-generated method stub      System.out.println("green");    }}public class Red implements Color {    @Override    public void print() {        // TODO Auto-generated method stub      System.out.println("red");    }}/** * 创建抽象工厂 * @author fan * */public abstract class AbstractFactory {    abstract Color GetColors(String color);    abstract Car GetCar(String car);}/** *  创建工厂 * @author fan * */public class ColorFactory extends AbstractFactory{    @Override    public Color GetColors(String color) {        // TODO Auto-generated method stub        if (color == null) {            return null;        }        if (color.equalsIgnoreCase("GREEN")) {            return new Green();        } else if (color.equalsIgnoreCase("RED")) {            return new Red();        }        return null;    }    @Override    Car GetCar(String car) {        // TODO Auto-generated method stub        return null;    }}/** * 创建工厂 * @author fan * */public class CarFactory  extends AbstractFactory{    @Override    Color GetColors(String color) {        // TODO Auto-generated method stub        return null;    }    @Override    Car GetCar(String car) {        // TODO Auto-generated method stub        // TODO Auto-generated method stub        if (car == null) {            return null;        }        if (car.equalsIgnoreCase("BMW")) {            return new Bmw();        } else if (car.equalsIgnoreCase("BC")) {            return new Bc();        }        return null;    }}/** * 工厂生成器 * @author fan * */public class FactoryProducer {    public static AbstractFactory getFactory(String choice) {        if (choice.equalsIgnoreCase("COLOR")) {            return new ColorFactory();        } else if (choice.equalsIgnoreCase("CAR")) {            return new CarFactory();        }        // TODO Auto-generated method stub        return null;    }}public class Test {  public static void main(String[] args) {   AbstractFactory carFactory = FactoryProducer.getFactory("CAR");   AbstractFactory colorfactory = FactoryProducer.getFactory("COLOR");    Car bwm = carFactory.GetCar("bmw");    Car bc = carFactory.GetCar("bc");    bwm.driver();    bc.driver();    Color green = colorfactory.GetColors("GREEN");    Color red = colorfactory.GetColors("RED");    green.print();    red.print();}}
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 父母去世监狱人怎么办 公司不续签合同怎么办 股票亏20个点后怎么办 摩托车给扣了怎么办 通知拘留跑了怎么办 假烟倒卖会怎么办 卖了40万假烟怎么办 刑事拘留15天了怎么办 治安传唤人不到怎么办 治安处罚有劣迹怎么办 学生怀孕了该怎么办 有病不能拘留那怎么办 拘留所不交伙食费怎么办 治安拘留不执行怎么办 释放证明书丢了怎么办 银行提前收贷款怎么办 存货周转天数高怎么办 欠款人没有财产怎么办 起诉后对方没钱怎么办 法院起诉人不到怎么办 治安拘留跑了怎么办 看守所里生病了怎么办 二审上诉被驳回怎么办 醉酒驾车取保候审以后怎么办 小案子证据不足怎么办 撞车不严重逃逸怎么办 被执行人没有财产执行怎么办 挖到人头了怎么办 取保保证金不退怎么办 被诬陷经济诈骗怎么办 醉驾刑事拘留后怎么办 被别人举报赌博怎么办 涉黄刑事拘留怎么办取保候审 换了车牌保险怎么办 车辆转让后保险怎么办 立案后警察不管怎么办 打架后对方讹人怎么办 工商被恶意举报怎么办 店铺被工商举报怎么办 被买单侠恐吓怎么办? 团伙作案刑事拘留怎么办取保