zoukankan      html  css  js  c++  java
  • 静态工厂,普通工厂,抽象工厂---创建型设计模式

    一、静态工厂(简单,但是增加多一个对象时要修改代码)

    工厂代码

    复制代码
    public class StaFactory {
        private static StaFactory ourInstance = new StaFactory();
    
        public static StaFactory getInstance() {
            return ourInstance;
        }
    
        private StaFactory() {
        }
    
        public Animal getAnimal(String annimal){
            switch (annimal){
                case ("cat"):return new Cat();
    
                case ("dog"):return new Dog();
    
                default:return null;
            }
        }
    }
    复制代码

    客户端代码

        public static void main(String[] args) {
            Animal dog = StaFactory.getInstance().getAnimal("dog");
            dog.run();
            Animal cat = StaFactory.getInstance().getAnimal("cat");
            cat.run();
        }

    二、普通工厂(增加对象时不用修改代码,但是要增加很多class文件)

      只贴一个工厂的例子

    复制代码
    public class DogFactory {
        private static DogFactory ourInstance = new DogFactory();
    
        public static DogFactory getInstance() {
            return ourInstance;
        }
    
        private DogFactory() {
        }
        public Animal Create(){
            return new Dog();
        }
    }
    复制代码

    客户端使用

    复制代码
     //普通工厂
        public static void main(String[] args) {
            Animal dog = DogFactory.getInstance().Create();
            dog.run();
            Animal cat = CatFactory.getInstance().Create();
            cat.run();
        }
    复制代码

    三、抽象工厂,基本上是普通工厂的升级,只是多几个create方法

    先写一个工厂接口

    public interface AbFactory {
         Person createPerson();
         Animal createAnimal();
    }

    再写一个工厂实例

    复制代码
    public class HighFactory implements AbFactory {
        @Override
        public Person createPerson() {
            return new HighPerson();
        }
    
        @Override
        public Animal createAnimal() {
            return new HighAnimal();
        }
    }
    复制代码

    客户端调用代码

        //客户端调用代码
        public static void main(String[] args) {
            HighFactory highFactory = new HighFactory();
            highFactory.createAnimal().run();
            highFactory.createPerson().say();
        }
    欢迎关注我的公众号:“进阶者euj”
  • 相关阅读:
    Membership角色与权限管理
    Virtual PC 2007 下载地址
    Support Web Application Projects
    CSS使用高级技巧20则
    apache和IIS共用80端口
    Dreamweaver扩展(插件)使用
    CSS横向菜单下拉显示子菜单
    openPNE创建项目
    基础AJAX
    连接数据库
  • 原文地址:https://www.cnblogs.com/yeyongjian/p/8654715.html
Copyright © 2011-2022 走看看