zoukankan      html  css  js  c++  java
  • Factory

    父类决定实例的生成方式,但并不决定所要生成的具体的类,具体的处理全部交给子类负责
    image-20200310085850380

    /**
     * 产品
     */
    public abstract class Product {
        public abstract void use();
    }
    
    /**
     * 工厂
     */
    public abstract class Factory {
        public final Product create(String owner){
            Product p = createProduct(owner);//调用生成实例的专用方法,可以防止父类与其他具体类耦合
            registerProduct(p);
            return p;
        }
        protected abstract Product createProduct(String owner);//生成产品
        protected abstract void registerProduct(Product product);//注册产品
    }
    
    public class IDCard extends Product {
        private String owner;
    
        public IDCard(String owner) {
            System.out.println("制作 "+owner+" 的ID卡");
            this.owner = owner;
        }
    
        @Override
        public void use() {
            System.out.println("使用 "+owner+" 的ID卡");
        }
    
        public String getOwner() {
            return owner;
        }
    }
    
    public class IDCardFactory extends Factory {
        private List owners = new ArrayList();
        @Override
        protected Product createProduct(String owner) {
            return new IDCard(owner);
        }
    
        @Override
        protected void registerProduct(Product product) {
            owners.add(((IDCard)product).getOwner());
        }
    
        public List getOwners() {
            return owners;
        }
    }
    
    public class Main {
        public static void main(String[] args){
            Factory factory = new IDCardFactory();
            Product c1 = factory.create("a");
            Product c2 = factory.create("b");
            Product c3 = factory.create("c");
            c1.use();
            c2.use();
            c3.use();
            //制作 a 的ID卡
            //制作 b 的ID卡
            //制作 c 的ID卡
            //使用 a 的ID卡
            //使用 b 的ID卡
            //使用 c 的ID卡
        }
    }
    
  • 相关阅读:
    idea配置svn
    idea历史版本下载
    IntelliJ IDEA 2017.1.4 x64配置说明
    IDEA 初始配置教程
    【phonegap】用本地浏览器打开网页
    【phonegap】IOS按HOME键,程序进入suspended状态,再调出,界面出现文字丢失问题
    iOS按home键后程序的状态变化
    [phonegap]安装升级
    highcharts图表显示鼠标选择的Y轴提示线
    HTML5的local storage
  • 原文地址:https://www.cnblogs.com/fly-book/p/12460206.html
Copyright © 2011-2022 走看看