设计模式-模板方法模式

本文意在分享自己理解的命令模式,尽量生动有趣,本文将使用WPF为例子:

让我们幻想一个场景:

有一天你开的餐馆已经很有名了

到处都是你的连锁店,但是你发现

有些店家乱来,不按你的配方和顺序来

再这样下去就要把招牌砸了!

这是你的正版店铺

加盟店1

有些地方喜欢吃辣,还能接受

可以针对地区有点变动

加盟店2

不是??水都不加?

这能忍?????

是时候管管他们了!

好像还得管管顺序

不然等鸡都糊了再加水有什么用!

于是乎

来两个例子看看

很好,达到了预期,加盟店也不会乱来了

也因地制宜,充分体现了延展性

最后看下例子中的六大原则:

单一职责原则(SRP):每个类都有清晰的职责。AbstractClass类负责定义算法的骨架,ChinaRestaurant和AmericaRestaurant类分别实现具体的步骤。

开放封闭原则(OCP):可以通过创建新的具体子类来扩展算法的步骤,但是如果要修改算法顺序,就得改抽象类。

里氏替换原则(LSP):具体子类(ChinaRestaurant和AmericaRestaurant)可以替换抽象类(AbstractClass),而不会破坏程序的正确性。

依赖倒置原则(DIP):抽象类(AbstractClass)依赖于抽象,具体子类(ChinaRestaurant和AmericaRestaurant)依赖于抽象类。这种依赖关系使得代码更加灵活,易于扩展和维护。

接口隔离原则(ISP):没有明确的接口,但抽象类(AbstractClass)充当了一个接口的角色,定义了公共的模板方法。

迪米特法则(LoD):抽象类(AbstractClass)只与具体子类(ChinaRestaurant和AmericaRestaurant)进行交互,而不与其他类进行直接交互,减少了类之间的耦合度。

Good

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

相关推荐
开发者联盟league30 分钟前
在windows上安装和运行rocketmq
windows·rocketmq
非凡ghost3 小时前
可拓浏览器:给手机浏览器装上“外挂“!2W+拓展+AI搜索,玩出无限可能!
windows·智能手机·音视频·firefox
程序设计实验室3 小时前
Spark.NET:一个试图把 Django / Rails 式开发体验带回 .NET 世界的全栈 Web 框架。
c#
小神.Chen3 小时前
如何删除远程桌面的连接记录,一键清理mstsc远程桌面连接的记录
windows
huzhongqiang3 小时前
Python 单例模式的几种实现方式:朴素才是王道
设计模式
John_ToDebug3 小时前
WebHostView 与 TabStrip 交互机制深度解析
c++·chrome·windows
byoass4 小时前
智巢AI知识库深度解析:企业文档管理从大海捞针到精准狙击的进化之路
开发语言·网络·人工智能·安全·c#·云计算
L1624764 小时前
Win11 共享→Windows Server 访问故障总结(极简可复用)
开发语言·windows·php
love530love5 小时前
ComfyUI MediaPipe 终极填坑:解决 incompatible function arguments 报错,基于代理模式的猴子补丁升级版
人工智能·windows·comfyui·mediapipe·猴子补丁·monkey patch·python 3.12
今夕资源网5 小时前
Windows Terminal更舒适的命令行环境 仅11MB 支持并行运行WSLLinux子系统 github开源项目
windows·github·命令行·cmd·terminal