设计模式-工厂模式

场景:

有一天你的餐厅越来越大了,要开到全国各地去,有很多人要加盟,但是你不想吧祖传配方暴露在光天化日之下,于是乎,工厂方法来啦:

首先,祖传秘方是不能变的,而且不能给别人看,然后如何规范加盟商,保证出品来满足狗头客户呢?

首先是祖宗之法不可变,这是好吃的关键,也是不想给外面阿猫阿狗知道的东西

然后就是定制他们的使用顺序,至此完成秘方的封装

然后就是开连锁店的步骤,我只保证我的核心秘方用上了,至于其他的,店可以灵活调整

于是乎

广东加盟店和湖南加盟店开张了:

再提供按钮选项给狗头客户:

狗头客户完成了点餐,得到了自己要的东西,我们自己的配方流程管理又没有暴露出去,完美

这就是工厂模式,提供了一种创建对象的最佳方式,而无需暴露对象创建的逻辑。

再对照六大原则:

单一职责原则(SRP):Secret类负责定义了添加油、盐和水的方法,Dishes类负责定义了烹饪方法,Restaurant类负责定义了创建菜品和制作菜品的方法,HunanRestaurant和GuangdongRestaurant类负责具体的菜品创建。

开放封闭原则(OCP):通过继承Restaurant类并重写CreateDish方法,可以轻松地添加新的菜品类型,而无需修改Restaurant类的代码。

里氏替换原则(LSP):HunanRestaurant和GuangdongRestaurant类都是Restaurant类的子类,可以替换Restaurant类的对象。

依赖倒置原则(DIP):Restaurant类依赖于抽象的Dishes类,而不是具体的Dishes类。

接口隔离原则(ISP):Restaurant类和Dishes类都只依赖于它们需要的方法,没有强迫客户端依赖于不需要的方法。

迪米特法则(LoD):Restaurant类只与抽象的Dishes类交互,而不需要了解具体的菜品类。

Good

最后,没有什么设计模式是最好的,只有最好的使用方法

相关推荐
折哥的程序人生 · 物流技术专研2 分钟前
第8篇:模板方法模式的优缺点与面试高频考点
java·设计模式·面试·模板方法模式·行为型模式·优缺点·扩充系列
workflower1 小时前
人形机器人全身运动控制能力大幅提升
人工智能·深度学习·机器学习·设计模式·机器人·自动化
折哥的程序人生 · 物流技术专研1 小时前
Java 23 种设计模式:从踩坑到精通 | 备忘录模式 —— 快照与撤销,给对象装一个“后悔药”
java·设计模式·备忘录模式·行为型模式·java设计模式·从踩坑到精通·撤销重做
Kel2 小时前
万物皆 Runnable:LangChain 如何用一个接口统一模型、链与图
人工智能·设计模式·架构
ttod_qzstudio5 小时前
【软考设计模式】策略模式:算法族的封装与动态切换精讲
设计模式·策略模式
咖啡八杯12 小时前
GoF设计模式——迭代器模式
java·后端·设计模式·迭代器模式
ttod_qzstudio14 小时前
【软考设计模式】外观模式:复杂子系统的“门面“封装与代码填空精讲
设计模式·外观模式
geovindu20 小时前
CSharp: Prototype Pattern
开发语言·后端·设计模式·.net·原型模式·创建型模式
ttod_qzstudio21 小时前
【软考设计模式】组合模式:“部分-整体“层次结构与树形对象统一操作精讲
设计模式·组合模式
ttod_qzstudio1 天前
【软考设计模式】装饰模式:“套娃“式增强与动态职责扩展精讲
设计模式·装饰模式