- 博客(8)
- 资源 (5)
- 收藏
- 关注
原创 设计模式之观察者模式
上篇我们讲了策略模式,这篇我们再来聊聊观察者模式,观察者模式也是一种应用广泛的设计模式,比如一些树型结构的游戏引擎,父节点和子节点的联动等。观察者模式的本质就是建立目标对象和观察者对象之间一对多的依赖关系,当目标对象状态发生改变时,观察者对象的状态也自动随之改变。
2015-10-28 11:31:49 1570 1
原创 设计模式之策略模式
上篇我们讲了迭代器模式,这篇我们再来讲一下使用率很高的策略模式,策略模式的本质就是实现算法的复用,将环境调用中的算法抽象出来单独为类,环境调用就只调用算法的抽象类,要添加或修改算法时就只修改算法的具体类就可以了,不影响环境类,符合开闭原则,非常方便。
2015-10-27 10:05:56 649
原创 设计模式之迭代器模式
上篇我们讲了外观模式,这篇我们再来看看迭代器模式,这也是一种使用频率很高的模式。通常的数据存储聚合类中,既包括数据存储的功能又包括对这些数据遍历的功能,而要修改聚合类,既得修改数据存储又得修改遍历功能,非常繁琐,也不符合单一职责原则。迭代器模式的核心思想是将数据存储和数据遍历分开,让数据遍历的方法单独组成一个迭代器的类,基本架构:一个抽象聚合类(包括数据存储和抽象遍历类),一个具体聚合类(包括数据存储和具体遍历类),一个抽象遍历类,一个具体遍历类。这样当我们有新的产品需求如添加一个新的具体聚合类的时候,我们
2015-10-26 14:38:52 635
原创 设计模式之外观模式
由以上看出外观模式本质上是在外部调用和内部子系统直接增添了一个中间层Facade类,由该类来代为调用内部子系统方法,而外部调用不需要了解内部系统的细节。传统调用方式和外观模式调用方式就好比自助餐饭店和普通饭店点餐的区别,自助餐饭店要自己知道饭菜放在房间哪个位置,要吃什么菜都得自己去一个个拿。而普通饭店不需要知道饭菜放在哪里,要吃什么只需要通知服务员就可以了,然后服务员去拿。这个服务员角色就类似于外观模式中的Facade类。
2015-10-21 11:29:42 634
原创 设计模式之单例模式
在上面我们可以看到经典单例模式的构造过程:首先要该类不被其他外部调用实例化,就要将构造函数设为私有权限,然后又通过公共的静态方法来实例化这个类,返回实例化后的对象的指针,然后通过内部私有指针mInstance来保存这个返回的指针,这样我们就可以使用这个类了。但是怎么来保证这个实例的唯一性呢?我们在静态方法getInstance()中要先判断,如果mInstance是为NULL的(mInstance要初始化为NULL),那么我们才实例化这个类。
2015-10-20 18:01:17 568
原创 设计模式之抽象工厂模式
由以上可以看出抽象工厂模式和工厂方法模式最大的不同是在抽象工厂模式中,一个工厂里可以生产多个产品,而在工厂方法模式中一个工厂就只能生产一种产品。可能有些人觉得这抽象工厂模式和简单工厂模式不就差不多了吗? 我们再来看看抽象工厂模式和简单工厂模式的区别:首先简单工厂模式是没有多态工厂的实现的,也就是说简单工厂模式没有工厂基类。其次简单工厂模式的工厂里生产的产品可以是任意产品,没有产品族的概念。而抽象工厂模式里同一个工厂生产的产品是属于同一产品族的,一般来说这些产品的种类几乎是稳定不变的,所以不会频繁改变一个工厂
2015-10-20 09:58:03 590
原创 设计模式之工厂方法模式
上篇我们讲了简单工厂模式,也提到了简单工厂模式的缺点,这篇我们来讲一下工厂方法模式,而工厂方法模式在一定程度上避免了简单工厂模式的那些缺点,废话不多说,上代码咯。
2015-10-19 18:36:47 569
原创 设计模式之简单工厂模式
最近有点空闲,就总结一下编程中遇到的设计模式吧,也算是增强一下记性。首先我们说一下工厂模式,这个工厂模式呢,又分为简单工厂模式、工厂方法模式(多态工厂模式)、抽象工厂模式这三种,这三种我都会陆续讲到。
2015-10-19 18:09:22 580
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人