设计模式-02简单工厂模式

思想

简单工厂,也称为静态工厂模式,包含如下角色:

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

代码实现

//抽象产品
public abstract class Coffee {
  public abstract String getName();
}


//具体产品
public class AmericanCoffee extends Coffee {
  public String getName() {
    return "美式咖啡";
 }
}
public class LatteCoffee extends Coffee {
  public String getName() {
    return "拿铁咖啡";
 }
}

//具体工厂  createCoffee方法为静态方法
public class SimpleCoffeeFactory {
  public static Coffee createCoffee(String type) {
    //声明Coffee类型的变量,根据不同类型创建不同的coffee子类对象
    Coffee coffee = null;
    if("american".equals(type)) {
      coffee = new AmericanCoffee();
   } else if("latte".equals(type)) {
      coffee = new LatteCoffee();
   } else {
      throw new RuntimeException("对不起,您所点的咖啡没有");
   }
    return coffee;
 }
}

优点与缺点

优点:

  • 封装了创建对象的过程,可以通过参数直接获取对象。
  • 把对象的创建和业务逻辑层分开,如果要实现新产品直接修改工厂类,而不需要在原代码中修改,扩展性高

缺点:

  • 实现新产品需要修改 SimpleCoffeeFactory 的代码,违反了开闭原则。

开闭原则

        对扩展开放,对修改关闭,在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果,简言之,是为了使程序的扩展性好,易于维护和升级,使用接口和抽象类。
        抽象灵活性好,适应性广,只要抽象的合理,可以基本保持软件架构的稳定,软件中易变的细节可以从抽象派生来的实现类来进行扩展,当软件需要发生变化时,只需要根据需求重新派生一个实现类来扩展就可以。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值