
设计模式
呆呆瓜_小司
在程序的世界里尽情翱翔!
展开
-
InterpreterPattern
//为了了解解析器这一设计模式,本文根据sunxing007的博客,实现了下c#版本的解释器,原文地址为:http://blog.youkuaiyun.com/sunxing007/article/details/5477634可以实现简单的加减法数值顺序计算using System;using System.Collections.Generic;using System.Linq;us原创 2015-05-31 16:37:50 · 368 阅读 · 0 评论 -
单例模式-HeadFirst学习
一、需求背景有些类在实际应用场景中只需要一个具体对象来管理,如线程池(threadpool)、缓存(cache)、对话框、处理偏好设置和注册表的对象、日志对象、充当打印机、显卡等设备的驱动程序的对象。事实上这类对象只能有一个实例,如果制造出多个实例,就会导致很多问题产生,如程序的行为异常、资源使用过量,或者不一致的结果。单例模式的作用相当于全局变量,但全局变量必须在程序一开始就创建好对象,原创 2015-11-24 16:01:38 · 380 阅读 · 0 评论 -
CompositePattern--HeadFirst学习
1、组合模式定义组合模式允许将对象组合成树状结构来表现整体-部分层次结构。组合能让客户以一致的方式处理个别对象和对象组合。2、要点组合包含组件,而组件有两种,一种是叶节点元素与组合。组合持有一群孩子,这些孩子可以是别的组合或叶节点元素。当使用这种方式组织数据的时候,最终会得到树形结构,根部是一个组合,而组合的分支逐渐往下延伸,直至叶节点。使用组合,我们能把相同的操作用在组合和个原创 2015-12-03 21:14:30 · 281 阅读 · 0 评论 -
Adapter设计模式-HeadFirst学习
1、适配器模式定义将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间2、要点 与外观模式一起总结3、例子代码using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace AdapterPattern{原创 2015-12-01 23:30:13 · 315 阅读 · 0 评论 -
FacadePattern-HeadFirst学习
1、外观模式定义提供了一个统一的接口,用来访问子系统中的一群接口,让子系统更容易使用。2、要点当需要用到一个现有的类而其接口不符合你的需要时,就使用适配器模式当需要简化并统一一个很大的接口或一群复杂的接口时,使用外观模式适配器改变接口以符合客户的期望外观将客户从一个复杂的子系统中解耦实现一个适配器可能需要一番功夫,也可能不费工夫,视目标接口的大小和复杂程度实现一个外观,原创 2015-12-01 23:37:15 · 325 阅读 · 0 评论 -
观察者模式-HeadFirst学习
1、观察者模式定义:定义对象之间的一对多依赖,如此,一个对象的状态改变时,他的所有依赖者都会收到通知,并自动更新;2、关键点该模式定义了两个对象之间的松耦合关系,观察者不知被观察者的细节,被观察者不必知道观察者的具体表现,只要双方交互的接口未变,在扩展性的观察者时,被观察者不必修改代码;3、例子源码:using System;using System.Collections.原创 2015-11-17 22:18:22 · 372 阅读 · 0 评论 -
MVC设计模式--HeadFirst学习
1、模型视图设计器模式是可重用性很高的基于多个模式创建出来的复合模式,其中模型负责数据状态和逻辑、视图负责显示和交互、控制器负责传达视图要求模型需要执行的命令,而模型和视图之间是观察者模式关系、视图和控制器之间是策略模式关系,视图本身通过组合模式实现。2、例子代码using System;using System.Collections.Generic;using System.L原创 2015-12-05 03:35:13 · 629 阅读 · 0 评论 -
IteratorPattern--HeadFirst学习
1、迭代器设计模式定义提供一种方法顺序访问聚合对象中的各个元素,而又不暴漏其内部表示。2、要点迭代器模式提供了一种方法,可以顺序访问一个聚合对象中的元素,而不不用知道内部是如何表示的。迭代器模式把在元素之间游走的责任交给了迭代器,而不是聚合对象,使得聚合对象的接口实现更加简洁,可以让聚合更专注在其他事情上面。3、例子代码using System;using System.原创 2015-12-03 21:25:58 · 277 阅读 · 0 评论 -
抽象工厂模式--HeadFirst学习
一、模式定义:抽象工厂模式提供了一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。抽象工厂允许用户使用抽象的接口创建一组相关的产品,而不需要知道实际产出的具体产品是什么。这样一来,客户就从具体的产品中解耦。二、与工厂方法之间关系:1、抽象工厂在创建距离工厂的时候是通过工厂方法来实现的;2、抽象工厂需要定义若干个方法用于创建一个产品家族,而工厂方法只需要一个方法创建一类原创 2015-11-23 20:42:23 · 396 阅读 · 0 评论 -
装饰者模式——HeaderFirst学习笔记
1 装饰者模式定义动态的将责任附加到对象上,想要扩展功能,装饰者提供有别于继承的另外一种选择。2 装饰者模式精髓2.1对扩展开放,对修改关闭2.2继承属于扩展形式之一,但不见得是达到弹性设计的最佳方案2.3设计应该允许行为被扩展而无需修改现有代码2.4装饰者意味着一群装饰者类,这些类用来包装具体的组件2.5装饰者和被装饰者具备同样的类型2.6装饰者对组件的客户是透明原创 2015-11-18 22:21:45 · 423 阅读 · 0 评论 -
Command设计模式-HeadFirst学习
1、 命令模式定义命令模式主要解决将方法调用(Method invocation)封装起来。通过封装方法调用,我们可以把运算块包装成型。调用此运算的对象不需要关心事情是如何进行的,只需要知道如何使用包装成型的方法来完成指定任务即可。通过封装方法调用,可以做很多事情,如记录日志、重复使用这些封装来实现撤销(undo)。2、要点将发出请求的对象和执行请求的对象解耦在被解耦的两者之间是通原创 2015-12-01 23:21:30 · 319 阅读 · 0 评论 -
StatePattern-HeadFirst学习
1、状态模式定义允许对象在内部状态改变时,改变对象本身的行为,对象看起来好像修改了他的类。2、要点该模式将状态封装到独立的类里面,并将动作委托给代表当前状态的对象,行为就会随着内部状态的改变而改变。从客户使用的角度来看,如果说我使用的对象完全改变了他的行为,那么客户会觉得这个对象时从另一个类实例化而来的。然而实际上,我们是通过组合通过简单引用不同的状态对象来造成类被改变的假象。原创 2015-12-03 23:55:23 · 335 阅读 · 0 评论 -
策略模式——HeadFirst学习笔记
1、策略模式:定义了算法族,分别封装起来,让他们之间可以相互替换,此模式让算法的变化独立于使用算法的客户;2、设计工具箱中解锁的工具:面向对象设计基础:抽象、封装、多态、继承面向对象原则:封装变化、都用组合少用继承、针对接口编程,不针对实现编程;3、样例实现:using System;using System.Collections.Generic;using Syst原创 2015-11-16 23:17:43 · 435 阅读 · 0 评论