zoukankan      html  css  js  c++  java
  • 设计模式之Factory Method模式

    作用:将实例的生成交给子类

    用Template Method模式来构建生成实例的工厂,这就是Factory Method模式。

    在Factory Method中,父类决定实例的生成方式,但并不决定所要生成的具体的类,具体的处理全部交给子类去负责

    UML类图:

    Product类:

    public abstract class Product
    {
        public abstract void use();
    }

    use方法的实现交给Product的子类

    Factory类:

    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);
    }

    IDCard类:

    public class IDCard extends Product
    {
        private String owner;
        
        IDCard(String owner)
        {
            this.owner = owner;
        }
        
        public void use()
        {
            System.out.println("use it.");
        }
        
        public String getOwner()
        {
            return owner;
        }
    }

    IDCardFactory类:

    public class IDCardFactory extends Factory
    {
        private List owners = new ArrayList();
        
        protected Product createProduct(String owner)
        {
            return new IDCard(owner);
        }
        
        protected void registerProduct(Product product)
        {
            owner.add(((IDCard)product).getOwner());
        }
        
        public List getOwners()
        {
            return owners;
        }
    }

    Main类:

    public class Main
    {
        public static void main(String[] argvs)
        {
            Factory factory = new IDCardFactory();
            
            Product card1 = factory.create("XXX");
            card1.use();
        }
    }

    步骤:首先创建对应实例的工厂,然后通过实例的工厂去创建对应实例,此中实例的构造函数是包内,并非public

  • 相关阅读:
    方向ajax(http long request实现实时通信)
    HTTP防盗链与反防盗链
    linux开启过程详解
    自动化运维工具----saltstack安装及配置
    python----网络编程(TCP通讯)
    windows----bat方式实现ftp推送
    shell----ftp推送
    python----FTP文件拉取(new)
    haproxy----四层负载均衡
    python----时间转换
  • 原文地址:https://www.cnblogs.com/cdp1591652208/p/10792514.html
Copyright © 2011-2022 走看看