zoukankan      html  css  js  c++  java
  • 7.04_简单工厂模式和工厂方法模式

    一、简单工厂模式概述
      * 又叫静态工厂方法模式,它定义一个具体的工厂类负责创建一些类的实例
      * B:优点
        * 客户端不需要在负责对象的创建,从而明确了各个类的职责
       C:缺点
        * 这个静态工厂类负责所有对象的创建,如果有新的对象增加,或者某些对象的创建方式不同,就需要不断的修改工厂类,不利于后期的维护
      * D:案例演示
        * 动物抽象类:public abstract Animal { public abstract void eat(); }
        * 具体狗类:public class Dog extends Animal {}
        * 具体猫类:public class Cat extends Animal {}
        * 开始,在测试类中每个具体的内容自己创建对象,但是,创建对象的工作如果比较麻烦,就需要有人专门做这个事情,所以就知道了一个专门的类来创建对象。
        *
          public class AnimalFactory {
            private AnimalFactory(){}

            //public static Dog createDog() {return new Dog();}
            //public static Cat createCat() {return new Cat();}

            //改进
            public static Animal createAnimal(String animalName) {
              if(“dog”.equals(animalName)) {}
                else if(“cat”.equals(animale)) {

                }else {
                return null;
                  }
              }
            }
    二、工厂方法模式的概述和使用
      * A:工厂方法模式概述
        * 工厂方法模式中抽象工厂类负责定义创建对象的接口,具体对象的创建工作由继承抽象工厂的具体类实现。
      * B:优点
        * 客户端不需要在负责对象的创建,从而明确了各个类的职责,如果有新的对象增加,只需要增加一个具体的类和具体的工厂类即可,不影响已有的代码,后期维护容易,增强了系统的扩展性
      * C:缺点
        * 需要额外的编写代码,增加了工作量
      * D:案例演示
      *
        动物抽象类:public abstract Animal { public abstract void eat(); }
        工厂接口:public interface Factory {public abstract Animal createAnimal();}
        具体狗类:public class Dog extends Animal {}
        具体猫类:public class Cat extends Animal {}
        开始,在测试类中每个具体的内容自己创建对象,但是,创建对象的工作如果比较麻烦,就需要有人专门做这个事情,所以就知道了一个专门的类来创建对象。发现每次修改代码太麻烦,用工厂方法改进,针对每一个具体的实现提供一个具体工厂。
        狗工厂:public class DogFactory implements Factory {
            public Animal createAnimal() {…}
              }
        猫工厂:public class CatFactory implements Factory {
            public Animal createAnimal() {…}
          }

  • 相关阅读:
    「日常训练」Single-use Stones (CFR476D2D)
    「日常训练」Greedy Arkady (CFR476D2C)
    「Haskell 学习」二 类型和函数(上)
    「学习记录」《数值分析》第二章计算实习题(Python语言)
    「日常训练」Alena And The Heater (CFR466D2D)
    Dubbo 消费者
    Dubbo 暴露服务
    Rpc
    git fail to push some refs....
    Spring Cloud (6)config 客户端配置 与GitHub通信
  • 原文地址:https://www.cnblogs.com/zyyzy/p/12426319.html
Copyright © 2011-2022 走看看