简单工厂和静态工厂模式

本文介绍了简单工厂模式的概念,这是一种编程习惯而非23种经典设计模式之一。简单工厂模式包括抽象产品、具体产品和具体工厂三个角色,用于封装对象创建过程。文章通过咖啡制作的例子展示了其实现方式,包括静态工厂类的使用。虽然这种方式便于获取对象,但增加新产品仍需修改工厂类,违反了开闭原则。总结了其优缺点,并指出在实际开发中的应用价值。
摘要由CSDN通过智能技术生成

简单工厂模式不是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;
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值