您的位置:首页 > 其它

策略模式与状态工厂,简单工厂的恩怨

2017-02-14 21:19 218 查看

前言

为什么题目叫做他们的恩怨呢?因为策略模式与状态模式很相似,他们互相指责对他是冒牌货,简单工厂和策略模式没有上一个模式仿造的厉害,让我一起看看谁才是真的!他们之间的区别是什么?

(如有异同请指出)

内容

首先给大家看一下他们的相似之处,就如两个瓷器一样,从表面上看我像都是一样的,我们首先看一下他们的UML图

策略模式UML



状态工厂UML



大家光从uml图中看是不是感觉这两个图基本上没有太大的差异,在我们学习设计模式的时候uML对于我们来说也是非常重要的,我们往往通过uMl图来知道这个程序的整体架构,到底谁是谁?哈哈

策略模式

我们把出行方式分成很多种,可以通过接口找到自己相应的类,当我们修改一个算法类的时候都会影响到其他类

缺点:所以对于策略的选择还是要客户端来做。所以在客户端就会用添加判断语句

状态模式

通过UML图可以发现策略模式跟状态模式很相似

状态模式:例如我们人的行为可以有不同的状态。当行为改变的时候,状态也会随之改变。

缺点:状态模式会很多

相似与区别

相似之处

两种模式都遵循开闭的设计原则,都是行为型,行为改变会影响,状体模式的行为改变会影响状态,策略模式的策略改变行为

区别

策略模式的客户端有条件判断,而状态模式的客户端没有。使用状态模式无需考虑具体的状态,因为行为变化状态就会自动的变化

策略模式在对象初始化的时候就已经更改执行。而状态模式是根据对象实例周期时间动态的改变

简单工厂的区别

工厂模式是创建型的,他主要注重于对象的创建,提供创建对象的接口,对象的创建于客户端无关,但策略模式是行为性的,它关注的是行为和算法,并且他与客户端有关

总结:

通过找联系与区别我们可以更好的去记住不同的模式
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: