设计模式--静态工厂、简单工厂方法案例分析

本文通过外卖小店的场景分析,探讨了静态工厂模式和简单工厂方法在对象创建中的应用。静态工厂模式将生产过程集中在静态工厂方法中,而简单工厂方法则通过抽象类和子类实现更高的扩展性。通过案例代码演示,展示了这两种工厂模式的实现和区别。文章鼓励读者在实际开发中,尤其是Android开发中,运用这些设计模式提升代码质量。
摘要由CSDN通过智能技术生成

简介

1.学习本篇文章,了解简单工厂设计模式的使用场景。
2.如何使用简单工厂模式。
3.简单工厂模式能解决什么问题?

场景

现在有一家外卖小店需要从生产一份外卖开始进行考虑设计,当客户在网上点出不同味道的菜时,外卖小店就将按照不同的订单进行生产出菜品,然后进行打包、等待外卖小哥获取、赠送给客户等不同的几道工序,才算完成一单,但是后期由于生意很好,客户评价很高,有些地方的老板想加盟本店了,那么可能就会出现不同味道的菜单,还有一些本地的特色菜也会加上菜单,这时,客户就能点到更多的菜品了,为了达到某些商家快速而且合理的进行管理,你是怎么设计这个方案的呢?

分析

一般情况下客户点餐的时候,都会查看平分高低,还有出货次数,如果人气好的,肯定要大量生产,而没有人点的,则可以考虑去除,所以我们通过以上的考虑,需要封装创建对象的代码,如将生产商品的对象封装起来,这样,我们出掉或者添加的时候,都只修改这部分的代码,那么是哪个生产商品呢?答案肯定是店家了,所以我们称这个生产商品的店家为“工厂”。
接下来我们进行分析以上代码该如何展现出来呢?我们将通过两种方式来进行编写。

静态工厂模式

如何实现呢?我们先来看看本例的类图

1.创建一个美食店,MealStore.class


/**
 * Author Eirunye
 * Created by on 2018/9/19.
 * Describe
 */
public class MealStore {
    


    public Meal submitOrderMeal(String type) {
    

        Meal meal;
        //利用静态工厂方法生成产品
        //重点(静态工厂实现代码)
        meal = SimpleMealsFactory.createMeal(type);

        //以下方法是进行一些设计而已不是静态工厂方法的模块,是产品的一些操作而已,无关紧要的
        //店家准备中...
        meal.mealPreparation();
        //打包
        meal.bake();
        //获取
        meal.getMeal();
        //配送
        meal.send();

        return meal;
    }
}

2.创建一个静态工厂SimpleMealsFactory.class


/**
 * Author Eirunye
 * Created by on 2018/9/18.
 * Describe 建立一个简单静态工厂,该工厂生产不同的菜品(美食)
 * Tip: 提示:这是不是我们经常使用的Util类的编写方式?
 */
public class SimpleMealsFactory {
    

    //将生产产品(美食放在这里)
    public static Meal createMeal(String type) {
    

        Meal meal = null;

        if ("crayfish".equals(type)) {
    
            meal = new CrayfishMeal(); //创建什么类型的产品(美食)让子类来操作
        } else if ("roastChicken".equals(type)) {
    
            meal = new RoastChicken();
        } else if ("A".equals(type)) {
    
         
        } else if ("B".equals(type)) {
    

        }
        // ...
        return meal; //返回的是美食商品
    }
}

3.创建产品美食抽象基类Meal.class,这样的话我们就可以交给子类来完成商品的生产。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值