在上一篇博客中,我已经将行为型模式分为了四类,现在就总结一下第一类——算法,用到算法的模式包含策略模式,以及模板方法。
一、概念
1、Strategy
(1)官方解释
它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。
(2)类图
(3)个人理解
策略就是一种方法,做一件事情有多种方法,方...
分类:
编程语言 时间:
2014-12-30 11:49:44
阅读次数:
166
我们知道,设计模式分别是六个原则和三大模式,分别可以分为创建型模式、结构型模式、行为型模式,其中结构型模式包括:适配器模式、装饰模式、桥接模式、组合模式、享元模式、代理模式、外观模式。在这里,我们就说一下结构型模式。
适配器模式(Adapter):
定义:将一个类的接口转换成客户喜欢的另外一个接口,Adapter模式使得原本由于接口不兼容而不能一起工作的那些类一起工作。...
分类:
其他好文 时间:
2014-12-29 21:30:50
阅读次数:
223
拖拖拉拉的终于完成了行为型模式的总结,行为型模式一共十一个那么多,一直在想办法梳理知识,想要让自己印象深刻,但是又不知道了从哪里下手。回过头来看米语录,解决了我这个问题。
对待自己的知识要让他经历下面几个过程,罗列,比较,抽象。不要只要简单地把知识罗列出来。我知道自己为什么慢了,因为我连罗列都不肯花时间去做,怎么会有后面的提高呢?现在不肯花时间,以后就会花双倍的时间去弥补,出...
分类:
其他好文 时间:
2014-12-29 12:08:17
阅读次数:
175
学行为型模式的时候,觉得备忘录模式与命令模式差不多,今天就将两者进行对比,加深一下印象。
一、介绍
1、备忘录模式
(1)Memento:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将对象恢复到原先保存的状态。
(2)类图
(3)个人理解
我们日常生活中的备忘录,就是保存自己的记事,下...
分类:
其他好文 时间:
2014-12-24 18:06:49
阅读次数:
158
一、概述
在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样就可以在以后将对象恢复至原先保存的状态。它是一种对象行为型模式。
二、适用场景
1、类似于撤销功能的实现,保存一个对象在某一时间的部分状态或全部状态,当以后需要它时就可以恢复至先前的状态。
2、 对对象历史状态的封装、避免将对象的历史状态的实现细节暴露给外界。...
分类:
编程语言 时间:
2014-12-24 00:04:08
阅读次数:
213
一、设计模式的分类总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式...
分类:
其他好文 时间:
2014-12-23 17:00:13
阅读次数:
386
行为型模式第二部分:解释器模式、中介者模式、访问者模式、策略模式、备忘录模式、迭代器模式。
解释器模式
给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。
使用时期
如果一种特定类型的问题发生的频率足够高,那么可能就值得将该问题的各个实例表述为一个简单语言中的句子。这样就可以构建一个解释器,该解释器通...
分类:
其他好文 时间:
2014-12-22 13:01:27
阅读次数:
141
一 、 设计模式概述
总体来说设计模式分为三大类:
创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型
模式。
结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、
组合模式、享元模式。
行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任
链模式、命令模式、备忘录模式、状态模式、访问者模式、...
分类:
其他好文 时间:
2014-12-19 00:41:40
阅读次数:
277
观察者模式(observer行为型)c#简单例子
几个要点:模式使目标与观察都之间的依赖关系达到松耦合、通知会自动传播
例子:玩家击中敌人后发生一系列变化:发后爆炸、敌人少1个....
namespace adapterpattern
{
public partial class ObserverForm : Form
{
public ObserverFo...
策略模式(strategy)行为型模式c#简单例子
例子主是运用策略模式分解几种移动算法。
namespace adapterpattern
{
public partial class StrategyFrom : Form
{
public StrategyFrom()
{
InitializeComponent(...