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”
  • 相关阅读:
    WPF一步一脚印系列(1):万事起头难
    php设置时区
    关于我的几个博客
    php如何实现页面跳转
    穷人与富人的区别
    如何抓取关键字在百度搜索的排名
    我的博客园开通了
    在Foxmail中出现SSL连接错误应该如何解决
    javascript实现键盘按下回车时触发
    关于网站分页
  • 原文地址:https://www.cnblogs.com/yeyongjian/p/8654715.html
Copyright © 2011-2022 走看看