随笔分类 - Design & Pattern
编程规范性,设计模式的学习。
摘要:
今天咱们接着上一节的行为型模式观察者模式(Oberver Pattern)、中介者模式(Mediator Pattern)、备忘录模式(Memento Pattern)给大家继续讲。在前这几节中,因为时间紧促,可能有些诠释的不到位,可能多少有点瑕疵,因为不同人的理解是不同的概念。当然希望广大读者多提建议、之间的切磋。
下面介绍观察者模式(Oberver Pattern)的定义和在什么情况下使用。
观察者模式定义了对象间的一种一对多依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新。
使用情况:
1.对一个对象状态的更新,需要其他对象同步更新,而且其他对象的数量动态可变。
2.对象仅需要将自己的更新通知给其他对象而不需要知道其他对象的细节。
阅读全文
今天咱们接着上一节的行为型模式观察者模式(Oberver Pattern)、中介者模式(Mediator Pattern)、备忘录模式(Memento Pattern)给大家继续讲。在前这几节中,因为时间紧促,可能有些诠释的不到位,可能多少有点瑕疵,因为不同人的理解是不同的概念。当然希望广大读者多提建议、之间的切磋。
下面介绍观察者模式(Oberver Pattern)的定义和在什么情况下使用。
观察者模式定义了对象间的一种一对多依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新。
使用情况:
1.对一个对象状态的更新,需要其他对象同步更新,而且其他对象的数量动态可变。
2.对象仅需要将自己的更新通知给其他对象而不需要知道其他对象的细节。
阅读全文
摘要:
从今天开始讲行为型模式中的模版方法模式(Template Method)、命令模式(Command Pattern)、迭代器模式(Iterator Pattern)、观察者模式(Oberver Pattern)、中介者模式(Mediator Pattern)、备忘录模式(Memento Pattern)、解释器模式(Interpreter Pattern)、状态模式(State Pattern)、策略模式(Strategy Pattern)、职责链模式(Chain of Responsibility)、访问者模式(Visitor Pattern)。
下面我们介绍一下模版方法模式(Template Method)的定义和在什么情况下使用。
模板方法模式把我们不知道具体实现的步骤封装成抽象方法,提供一个按正确顺序调用它们的具体方法(这些具体方法统称为“模板
阅读全文
从今天开始讲行为型模式中的模版方法模式(Template Method)、命令模式(Command Pattern)、迭代器模式(Iterator Pattern)、观察者模式(Oberver Pattern)、中介者模式(Mediator Pattern)、备忘录模式(Memento Pattern)、解释器模式(Interpreter Pattern)、状态模式(State Pattern)、策略模式(Strategy Pattern)、职责链模式(Chain of Responsibility)、访问者模式(Visitor Pattern)。
下面我们介绍一下模版方法模式(Template Method)的定义和在什么情况下使用。
模板方法模式把我们不知道具体实现的步骤封装成抽象方法,提供一个按正确顺序调用它们的具体方法(这些具体方法统称为“模板
阅读全文
摘要:
先介绍一下享元模式(Flyweight Pattern)的定义和在什么情况下使用。
使用情况:在对象数量比较多时,导致运行代价提高时才使用;
定义:针对对象数量多,运用共享技术有效的支持大量细粒度对象。
定义:代理(Proxy)通常包含和将要使用的对象同样的方法,一旦开始使用这个对象,这些方法将通过代理(Proxy)传递给实际的对象。
使用情况:一个对象,比如一幅很大的图像,需要载入的时间很长,需要很长时间才可以完成的计算结果,并且需要在它计算过程中显示中间结果。这是一个需要载入和显示一幅很大的图像的程序,当程序启动时,就必须确定要显示的图像,但是实际的图像只能在完全载入后才可以显示!这时我们就可以使用代理模式(Proxy)。这个代理模式(Proxy)可以延迟实际图像的载入,直到它接收到一个paint请求。在实际图像的载入期间我们可以通过代理模式(P
阅读全文
先介绍一下享元模式(Flyweight Pattern)的定义和在什么情况下使用。
使用情况:在对象数量比较多时,导致运行代价提高时才使用;
定义:针对对象数量多,运用共享技术有效的支持大量细粒度对象。
定义:代理(Proxy)通常包含和将要使用的对象同样的方法,一旦开始使用这个对象,这些方法将通过代理(Proxy)传递给实际的对象。
使用情况:一个对象,比如一幅很大的图像,需要载入的时间很长,需要很长时间才可以完成的计算结果,并且需要在它计算过程中显示中间结果。这是一个需要载入和显示一幅很大的图像的程序,当程序启动时,就必须确定要显示的图像,但是实际的图像只能在完全载入后才可以显示!这时我们就可以使用代理模式(Proxy)。这个代理模式(Proxy)可以延迟实际图像的载入,直到它接收到一个paint请求。在实际图像的载入期间我们可以通过代理模式(P
阅读全文
摘要:
今天接着讲创建性模式中的组合模式(Composite Pattern)、外观模式(Façade Pattern)、享元模式(Flyweight Pattern)、代理模式(Proxy Pattern)。
组合模式(Composite Pattern),将对象以树形结构组织起来,以达成"部分-整体"的层次结构,使得客户端对单个对象和组合对象的使用具有一致性。
1. 定义了包含简单对象和组合对象的类层次结构。简单对象可以被组合到复杂对象中,而组合的对象可以再被组合。这样客户端代码中用到简单对象的地方都可以使用组合对象。
2. 简化客户端代码。客户端不用知道某对象是简单对象还是组合对象,可以以一致的方式使用这些对象。
3. 更容易增加新类型的组件。新的组件可以方便地加入已有组合对象中不用改变客户端代码。
阅读全文
今天接着讲创建性模式中的组合模式(Composite Pattern)、外观模式(Façade Pattern)、享元模式(Flyweight Pattern)、代理模式(Proxy Pattern)。
组合模式(Composite Pattern),将对象以树形结构组织起来,以达成"部分-整体"的层次结构,使得客户端对单个对象和组合对象的使用具有一致性。
1. 定义了包含简单对象和组合对象的类层次结构。简单对象可以被组合到复杂对象中,而组合的对象可以再被组合。这样客户端代码中用到简单对象的地方都可以使用组合对象。
2. 简化客户端代码。客户端不用知道某对象是简单对象还是组合对象,可以以一致的方式使用这些对象。
3. 更容易增加新类型的组件。新的组件可以方便地加入已有组合对象中不用改变客户端代码。
阅读全文
摘要:
下面章节将介绍结构型模式的适配器模式(Adapter Pattern)、桥接模式(Bridge Pattern)、装饰模式(Decorator Pattern)、组合模式(Composite Pattern)、外观模式(Façade Pattern)、享元模式(Flyweight Pattern)、代理模式(Proxy Pattern)。
下面介绍一下适配器模式(Adapter Pattern),适配器让类与类之间不至于因为接口不兼容而不能协同工作。类适配器可以使用多重继承来适配一个接口到另一个接口。
在以下情形,考虑使用适配器模式:
你要使用一个现成的类,但是它的接口不完全符合你的需求。
你要创建一个可复用的类来和无关的或者不可预见的其它类协同工作,也就是说,这个可复用的类未必一定要有兼容的接口。
阅读全文
下面章节将介绍结构型模式的适配器模式(Adapter Pattern)、桥接模式(Bridge Pattern)、装饰模式(Decorator Pattern)、组合模式(Composite Pattern)、外观模式(Façade Pattern)、享元模式(Flyweight Pattern)、代理模式(Proxy Pattern)。
下面介绍一下适配器模式(Adapter Pattern),适配器让类与类之间不至于因为接口不兼容而不能协同工作。类适配器可以使用多重继承来适配一个接口到另一个接口。
在以下情形,考虑使用适配器模式:
你要使用一个现成的类,但是它的接口不完全符合你的需求。
你要创建一个可复用的类来和无关的或者不可预见的其它类协同工作,也就是说,这个可复用的类未必一定要有兼容的接口。
阅读全文
摘要:
下面介绍创建性模式里的最后一种模式--原型模式(Protype Pattern),用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
浅拷贝和深拷贝之间的区别:浅拷贝是指将对象中的数值类型的字段拷贝到新的对象中,而对象中的引用型字段则指复制它的一个引用到目标对象。如果改变目标对象中引用型字段的值他将反映在原是对象中,也就是说原始对象中对应的字段也会发生变化。深拷贝与浅拷贝不同的是对于引用的处理,深拷贝将会在新对象中创建一个新的和原是对象中对应字段相同(内容相同)的字段,也就是说这个引用和原是对象的引用是不同的,我们在改变新对象中的这个字段的时候是不会影响到原始对象中对应字段的内容。所以对于原型模式也有不同的两种处理方法:对象的浅拷贝和深拷贝。在FCL中的System命名空间下面有一个浅拷贝的方法叫:MemberwiseClone它是创建当前Obj
阅读全文
下面介绍创建性模式里的最后一种模式--原型模式(Protype Pattern),用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
浅拷贝和深拷贝之间的区别:浅拷贝是指将对象中的数值类型的字段拷贝到新的对象中,而对象中的引用型字段则指复制它的一个引用到目标对象。如果改变目标对象中引用型字段的值他将反映在原是对象中,也就是说原始对象中对应的字段也会发生变化。深拷贝与浅拷贝不同的是对于引用的处理,深拷贝将会在新对象中创建一个新的和原是对象中对应字段相同(内容相同)的字段,也就是说这个引用和原是对象的引用是不同的,我们在改变新对象中的这个字段的时候是不会影响到原始对象中对应字段的内容。所以对于原型模式也有不同的两种处理方法:对象的浅拷贝和深拷贝。在FCL中的System命名空间下面有一个浅拷贝的方法叫:MemberwiseClone它是创建当前Obj
阅读全文
摘要:
接下来介绍一下创建性模式里的单件模式(Singleton Pattern)、抽象工厂模式(Abstract Factory)、建造者模式(Builder Pattern)、工厂方法(Factory Method)和原型模式(Protype Pattern).
首先要回忆一下前面讲过的一些概念,理解所具有的含义,然后再来看看图示和实例。
单件模式(Singleton Pattern)实例如下:
Public Class FaxNumber
{
Private Static FaxNumber _instance=null;
Private FaxNumber
{
}
Public Static FaxNumber GetInstance()
{
if(_instance==
阅读全文
接下来介绍一下创建性模式里的单件模式(Singleton Pattern)、抽象工厂模式(Abstract Factory)、建造者模式(Builder Pattern)、工厂方法(Factory Method)和原型模式(Protype Pattern).
首先要回忆一下前面讲过的一些概念,理解所具有的含义,然后再来看看图示和实例。
单件模式(Singleton Pattern)实例如下:
Public Class FaxNumber
{
Private Static FaxNumber _instance=null;
Private FaxNumber
{
}
Public Static FaxNumber GetInstance()
{
if(_instance==
阅读全文
摘要:
设计模式,这个名词我也不是很早听说的,大概也就是07年的9月份左右才知晓,其实最早是在java领域听说的,后来微软方面推出了C#的设计模式,设计模式其实都是相通的,目前还有Ajax设计模式.自我嘲笑的是曾一时我把设计模式等同于架构模式,譬如MVC架构。 因为本身设计模式和框架就关系比较亲密,很容易混淆。
设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。可复用面向对象软件系统现在一般划分为三大类:应用程序 工具箱和框架(Framework),我们平时开发的具体软件都是应用程序;Java的API属于工具箱;而框架是构成一类特定软件可复用设计的一组相互协作的类。
阅读全文
设计模式,这个名词我也不是很早听说的,大概也就是07年的9月份左右才知晓,其实最早是在java领域听说的,后来微软方面推出了C#的设计模式,设计模式其实都是相通的,目前还有Ajax设计模式.自我嘲笑的是曾一时我把设计模式等同于架构模式,譬如MVC架构。 因为本身设计模式和框架就关系比较亲密,很容易混淆。
设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。可复用面向对象软件系统现在一般划分为三大类:应用程序 工具箱和框架(Framework),我们平时开发的具体软件都是应用程序;Java的API属于工具箱;而框架是构成一类特定软件可复用设计的一组相互协作的类。
阅读全文
浙公网安备 33010602011771号