- 博客(9)
- 问答 (95)
- 收藏
- 关注
转载 访问者模式
一 使用场景 访问者模式是一种较为复杂的行为型设计模式,它包含访问者和被访问元素两个主要组成部分,这些被访问的元素通常具有不同的类型,且不同的访问者可以对它们进行不同的访问操作。二 定义 问者模式Visitor Pattern: 提供一个作用于某对象结构中的各元素的操作表示,它使我们可以在不改变各元素的类的前提下定义作用于这些元素的新操作。访问者模式是一种对象行为型模式。 Vistor抽象
2016-12-05 17:14:02 563
原创 模板方法模式
模板方法模式Template Method Pattern:定义一个操作中算法的框架,而将一些步骤延迟到子类中。模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。AbstractClass抽象类:在抽象类中定义了一系列基本操作,这些基本操作可以是具体的,也可以是抽象的,每一个基
2016-12-05 16:02:19 637
原创 策略模式
策略模式 Strategy Pattern:定义一系列算法类,将每一个算法封装起来,并让它们可以相互替换,策略模式让算法独立于使用它的客户而变化,也称为政策模式(Policy)。策略模式是一种对象行为型模式。 Context 环境类:环境类是使用算法的角色,它在解决某个问题(即实现某个方法)时可以采用多
2016-12-05 15:07:02 469
转载 状态模式
一 应用场景 一个机器有,一个排气状态,一个是压缩状态。在运行时,不同的状态会有不同的行为,当前的状态机在适当的时候会过渡到下一状态。二 定义 状态模式State Pattern:允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。其别名为状态对象(Objects for States),状态模式是一种对象行为型模式。 Context 环境类:环境类又称为上下文类,它
2016-12-04 15:37:19 828
转载 观察者模式
一 应用场景 社交网络中,当我们关注的一个人发表状态后粉丝就会有通知。这就用到了观察者模式,即:当一个对象发生改变的时候,其他对象将相应的做出反应。二 定义 观察者模式 Observer Pattern: 定义对象之间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新。观察者模式的别名包括发布-订阅(Publish/Subscribe)模式、模型-视图(M
2016-12-04 12:46:26 506
转载 备忘录模式
备忘录模式 Memento Pattern:在不破坏封装的前提下,捕获一个对象的内部状体,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。它是一种对象行为型模。Originator 原发器:它是一个普通类,可以创建一个备忘录,并存储它的当前内部状态,也可以使用备忘录来恢复其内部状态
2016-12-03 19:11:00 566
转载 中介者模式
用一个中介对象(中介者)来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。中介者模式又称为调停者模Mediator 抽象中介者:定义一个接口,用于各个对象之间的通信。ConcreteMediator 具体中介者:抽象中介者的子类,通过协调各个同事对象来实现协作行为,维持各个对各个对象的引用。Colleage 抽象同事类:定义各个对象的公有方法。同时维
2016-12-03 16:20:27 405
转载 迭代器模式
一定义 Iterator Pattern 迭代器模式:提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。 Iterator 抽象迭代器:定义访问和遍历元素的接口。ConcreteIterator 具体迭代器:实现抽象迭代器的接口,完成对聚合对象的遍历,同时在迭代器中通过游标来记录在聚合对象中所出的当前位置。Aggregate 抽象聚合类:用于存储和管理元素对象,声明cr
2016-12-03 08:24:46 545
转载 命令模式
命令模式的本质是对请求进行封装,一个请求对应于一个命令,将发出命令的责任和执行命令的责任分割开。命令模式允许请求的一方和接收的一方独立开来,使得请求的一方不必知道接收请求的一方的接口,更不必知道请求如何被接收、操作是否被执行、何时被执行,以及是怎么被执行的。
2016-12-02 20:38:18 808
空空如也
请问mysql-connector-python和的问题
2015-09-16
win8如何将磁盘管理器的黑色分区变为绿色的
2015-09-16
安装了mysqlconector 后然无法引入
2015-09-15
python和mysql连接数据库的问题
2015-09-15
在Python虚拟环境中使用环境外的mysql
2015-09-01
win8系统使用mysql出现Access denied
2015-09-01
win8安装mysql该选择哪个版本
2015-08-30
安装win8和Ubuntu双系统提示分区不可用
2015-08-28
virtualbox + vagrant如何配置ssh
2015-08-28
win8安装virtualbox后无法上网了
2015-08-27
Python出现了一个异常卡在那里不动了
2015-08-25
用npm安装package.json时出现错误
2015-08-24
npm安装package.json时repository为空
2015-08-23
安装npm install时出现错误
2015-08-23
用offsetLeft为什么输出的是0
2015-08-22
JavaScript如何设置画一个圆的背景色
2015-08-21
JavaScript做了个弹出层的form ,请问如何关闭form
2015-08-21
div中如何设置table表格图片不超过边框
2015-08-20
两个一体机如何用HDMI高清传输线连在一起呢
2015-08-19
github提交的问题,无法更新到远端的master
2015-08-18
Linux下进程是如何实现的?
2016-09-25
c++指针做参数,如何修改参数指向的内容
2016-08-16
请问vector不能这样写吗?
2016-08-14
new与delete的应用场景是什么?
2016-08-06
如何写linux分布式程序
2016-07-23
linux如何向红外串口写命令?
2016-07-09
请问C++在ubuntu下的socket编程有没有常连接的问题?
2016-06-27
为什么这个char*可以修改?
2016-06-24
ubuntu系统中路径的变量名有个符号‘$’表示什么意思?
2016-06-13
ubuntu系统键盘输入出现异常
2016-06-03
c++语法 ss << "hello world " << count 如何理解
2016-06-02
请问C++这样写是什么意思?
2016-04-25
ubuntu14.04安装mongodb出现问题
2016-03-19
python 压缩文件的几个问题
2015-12-12
请问如何用python urllib2下载doc文件
2015-12-06
请问写python爬虫如何用urllib或者requests模拟用户登录
2015-11-30
请问如何将主机的文件与VMware里的虚拟机共享
2015-09-20
请问centos中是如何配置网关的
2015-09-19
WinXP attackor虚拟机开机需要密码
2015-09-18
是不是所有的系统整型字节数都是4
2015-09-17
TA创建的收藏夹 TA关注的收藏夹
TA关注的人