美文网首页php
一、工厂模式

一、工厂模式

作者: RainySpring | 来源:发表于2020-04-27 23:52 被阅读0次

    工厂类拥有一个工厂方法(create),接受了一个参数,通过不同的参数实例化不同的产品类。

    1. 简单工厂模式
    • 实现一:简单工厂类
    public class AnimalFactory {
    //简单工厂设计模式(负担太重、不符合开闭原则)
    public static Animal createAnimal(String name){
    if ("cat".equals(name)) {
      return new Cat();
    }else if ("dog".equals(name)) {
      return new Dog();
    }else if ("cow".equals(name)) {
      return new Dog();
    }else{
      return null;
    }
    }
    }
    
    • 实现二:静态工厂模式
    //该简单工厂,也称为静态方法工厂
    public class AnimalFactory2 {
      public static Dog createDog(){
        eturn new Dog();
      }
      public static Cat createCat(){
        return new Cat();
        }
    }
    
    1. 工厂方法模式
    • 实现:抽象工厂类

    抽象工厂是应对产品族概念的。

    抽象出来的工厂对象,

    // 抽象出来的动物工厂----它只负责生产一种产品
    public abstract class AnimalFactory {
    // 工厂方法
    public abstract Animal createAnimal();
    }
    

    我们可以定义根据这个产品族里具体的产品类型去设计子类工厂,

    // 具体的工厂实现类1
    public class CatFactory extends AnimalFactory {
      @Override
      public Animal createAnimal() {
        return new Cat();
      }
    }
    
    
    // 具体的工厂实现类2
    public class DogFactory extends AnimalFactory {
      @Override
      public Animal createAnimal() {
        return new Dog();
      }
    }
    

    总结,
    很明显,简单工厂的特点就是“简单粗暴”,通过一个含参的工厂方法,我们可以实例化任何产品类,上至飞机火箭,下至土豆面条,无所不能。所以简单工厂有一个别名:上帝类。
    任何”东西“的子类都可以被生产,负担太重。当所要生产产品种类非常多时,工厂方法的代码量可能会很庞大。在遵循开闭原则(对拓展开放,对修改关闭)的条件下,简单工厂对于增加新的产品,无能为力。因为增加新产品只能通过修改工厂方法来实现。
    抽象工厂模式增加了扩展性。

    相关文章

      网友评论

        本文标题:一、工厂模式

        本文链接:https://www.haomeiwen.com/subject/vmtywhtx.html