学习记录之工厂模式——创建型模式


工厂模式分为如下三种:

1. 引例

假设现有需求:实现一个用户在奶茶店订购奶茶的项目。用户输入奶茶的品种,奶茶店输出该奶茶的制作信息,完成订购。

  • 1)奶茶的品种很多(比如:PearlMilkTea、CoconutMilkTea等)
  • 2)奶茶的制作有prepare,produce,packaging

传统的实现方式:

  • 构建奶茶的一个抽象类,让各个种类的奶茶继承,并实现自己独有的方法。

在这里插入图片描述

  • 用户输入奶茶名,输出奶茶的制作信息
public class OrderTea {
   
    public  OrderTea(){
   
        Tea tea = null;
        String orderType;
        do {
   
            orderType = getType();
            if (orderType.equals("PearlMilkTea")){
   
                tea = new PearlMilkTea("PearlMilkTea");
            }else if (orderType.equals("CoconutMilkTea")){
   
                tea = new CoconutMilkTea("CoconutMilkTea");
            }else {
   
                break;
            }
            tea.prepare();
            tea.produce();
            tea.packaging();
        }while (true);
    }

    private String getType() {
   
        try {
   
            BufferedReader strin = new BufferedReader(new InputStreamReader(System.in));
            System.out.println("输入想要订购的茶:");
            String str = strin.readLine();
            return str;
        } catch (IOException e) {
   
            e.printStackTrace();
            return "";
        }
    }
}
输入想要订购的茶:
PearlMilkTea
PearlMilkTea: 正在准备PearlMilkTea的原材料
PearlMilkTea: 正在制作中
PearlMilkTea: 制作完毕,正在打包
输入想要订购的茶:
CoconutMilkTea
CoconutMilkTea: 正在准备CoconutMilkTea的原材料
CoconutMilkTea: 正在制作中
CoconutMilkTea: 制作完毕,正在打包
  • 优点:容易理解,简单易操作。
  • 缺点:违反设计模式的OCP原则,即对扩展(提供方)开放,对修改(使用方)关闭。例如:当增加一个新的奶茶品种时,我们需要对下面的代码进行如下修改.
		// 使用方
		do {
   
            orderType = getType();
            if (orderType.equals("PearlMilkTea")){
   
                tea = new 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值