设计模式-模板方法模式

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

让我们幻想一个场景:

有一天你开的餐馆已经很有名了
到处都是你的连锁店,但是你发现
有些店家乱来,不按你的配方和顺序来
再这样下去就要把招牌砸了!

这是你的正版店铺
b2d09f0b8a0b4683be9ebc71ad46d3cb
加盟店1
a636ca38c2ff479f880c30f307c760a1
有些地方喜欢吃辣,还能接受
可以针对地区有点变动

加盟店2
ef42c4be665748e08b76c40e333a2aa3
不是??水都不加?
这能忍?????

是时候管管他们了!
8545b471cb3447a5b7cd942e5e3b878b

好像还得管管顺序
不然等鸡都糊了再加水有什么用!

于是乎
861e8da557e14464a2d2d53df2fb1d4f
来两个例子看看
ad09e72cc8f248489072ea186c1e20d4

076ad785dc8e44ffb1314332e4c534b7

9db1c264921a45a5b88181f4c2dded50

很好,达到了预期,加盟店也不会乱来了
也因地制宜,充分体现了延展性

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

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

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

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

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

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

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

Good

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

posted @ 2026-08-10 11:37  Poetindusk  阅读(2)  评论(0)    收藏  举报