简单工厂和静态工厂模式

简单工厂模式不是23种设计模式,更像是一种编程习惯。

简单工厂主要包括以下角色:

  1. 抽象产品:定义了产品的规范,描述了产品的主要特性和功能
  2. 具体产品:实现或继承抽象产品的子类
  3. 具体工厂:提供了创建产品的方法,调用者通过该方法来获取产品

抽象产品(咖啡接口)

public interface Coffee{
    String getName();
    
    void addMilk();
    
    void addSugar();
}

具体产品(美式咖啡)

public class AmericanCoffee implements Coffee{
    
}

具体产品(拿铁咖啡)

public class LatteCoffee implements Coffee{
}

具体工厂

public class SimpleCoffeeFactory{
    public Coffee createCoffee(String type){
        Coffee coffee;
        if(type.equlas("A")){
            coffee = new AmericanCoffee();
        }else{
            coffee = new LatteCoffee();
        }
        return coffee;
    }
}

在开发中也有一部分人将工厂类中的创建对象的功能定义为静态的,这个就是静态工厂模式,它也不是23种设计模式中的。

静态工厂类

public class StaticCoffeeFactory{
    public static Coffee createCoffee(String type){
        Coffee coffee;
        if(type.equals("A")){
            coffee = new AmericanCoffee();
        }else{
            coffee = new LatteCoffee();
        }
        return coffee;
    }
}

优点:
封装了创建对象的过程,可以通过参数直接获取对象。把对象的创建和业务逻辑分开,这样以后就避免了修改客户代码。如果要实现新产品直接修改工厂类,降低了客户代码修改的可能性,更容易扩展。

缺点:增加新产品时还是需要修改工厂类,违反了开闭原则

上一篇:不错的画类图工具-PlantUML


下一篇:装饰者模式_设计模式_java