16设计模式_策略模式与工厂方法模式的区别

本来想先写策略模式的实现,然后再写与工厂方法的区别。但想到我曾经在刚接触到这两种模式时看了不少资料和代码都搞不明白,直到理解了两者使用场景的区别,才看明白两种模式的代码。

所以,我决定直接通过案例来分享策略模式和工厂方法在使用场景上的区别。

我们模拟“电力公司”的场景来比较两种模式:

场景一:

假设一家电力公司下属有多家发电厂,包括:火力发电厂、水力发电厂等。我们是的电力公司的调度员,负责分配每家发电厂的发电任务。

比如:冬天水力不足,水力发电成本高且产能有限。我们就停止水力发电,采用火力发电。反之,在夏天,我们就停止火力发电,采用水力发电。(说明:这个调度方案只是为了说明设计模式而做的假设,现实中的调度情况不可能这么极端,请不要纠结于此)

本场景就可以使用策略模式:用策略模式对发电厂的接口进行封装,调度员不需要关注每种发电厂具体怎么发电。但他知道他所调度的发电厂是火力发电厂,还是水力发电厂。

场景二:

假设我们是普通用电的用户。比如:我们家里有各种家用电器,电力公司为我们的家庭供电。我们只需要将家用电器插头插入电源插座用电即可。

本场景就可以使用工厂方法模式:用工厂方法模式对电力的接口进行封装,用户完全不需要知道他所用的电是哪家电力公司提供的,也不需要知道是火力发电厂发的,还是水力发电厂发的。

猜你喜欢

转载自blog.csdn.net/weixin_46826913/article/details/108302684