• 设计模式之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

  • 相关阅读:
    android-layout-finder 在线生成findViewById
    Android 广播机制
    Android Service随笔
    新博客地址(https://minxin.github.io)
    angr学习(四)
    angr学习(三)
    angr学习(二)
    angr学习(一)
    android studio NDK开发方案
    python虚拟机
  • 原文地址:https://www.cnblogs.com/cdp1591652208/p/10792514.html
Copyright © 2020-2023  润新知