随笔分类 - 设计模式
摘要:下面是使用指责链模式的一个具体的实例,可以方便的理解指责链模式。其实指责链简单的来说,就是把一个指责的流程定义出来,像一条链路一样,每一个结点有自己的处理范围,若不能处理,则传到自己的引用的下一个结点。下面的实例也是这样的一个简单的流程。每一笔预算需要不同的人审核,不同的人有不同的审核范围,若款项在自己的处理范围之内,就可以直接处理掉,若不在自己的范围内,就传入到自己的上级进行处理。在写实例的时候,就需要用户把处理的过程给定义出来。既是把那条处理的链路定义出来。下面是示例的源代码:using System;
using System.Collections.Generic;
using Sys
阅读全文
摘要:一、职责链(Chainof Responsibility)模式责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织链和分配责任。二、责任链模式的结构责任链模式涉及到的角色如下所示:抽象处理者(Handler)角色:定义出一个处理请求的接口。如果需要,接口可以定义出一个方法,以设定和返回对下家的引用。这个角色通常由一个抽象类或接口实现。具体处理者(ConcreteHandler)
阅读全文
摘要:Command模式实例(C#)用命令模式设计一个公告板系统模块:某软件公司欲开发一个基于Windows平台的公告板系统。系统提供一个主菜单(Menu),在主菜单中包含了一些菜单项(MenuItem),可以通过Menu类的addMenuItem()方法增加菜单项。菜单项的主要方法是click(),每一个菜单项包含一个抽象命令类,具体命令类包括OpenCommand(打开命令),CreateCommand(新建命令),EditCommand(编辑命令)等,命令类具有一个execute()方法,用于调用公告板系统界面类(BoardScreen)的open()、create()、edit()等方法。现
阅读全文
摘要:适配器模式实例(C#):用Adapter模式设计一个仿生机器人:要求机器人可以模拟各种动物行为,在机器人中定义了一系列方法,如机器人叫喊方法cry()、机器人移动方法move()等。如果希望在不修改已有代码的基础上使得机器人能够像狗一样汪汪叫,像狗一样快跑,或者像鸟一样叽叽叫,像鸟一样快快飞,使用适配器模式进行系统设计。类图:说明:此类图有visual studio 2012 自动生成。由类图可见,首先实现的一个AnimalAdaptee的类,下面是两个字类,分别具体实现鸟和狗的Cry和Move方法。Robot是一个抽象类,具体的Adaptor类实RobotAdaptor类,它申明了一个私有的
阅读全文
摘要:1. 意图将一个类的接口转换成客户希望的另外一个接口。A d a p t e r模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。2.适用性以下情况使用A d a p te r模式• 你想使用一个已经存在的类,而它的接口不符合你的需求。• 你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作。• (仅适用于对象A d a p t e r)你想使用一些已经存在的子类,但是不可能对每一个都进行子类化以匹配它们的接口。对象适配器可以适配它的父类接口。3.结构类图4.参与者• Ta r g e t — 定义C l i e n t使用的与特
阅读全文
摘要:抽象工厂的具体实例:用Factory Method模式设计一个电视机工厂:要求为每种品牌的电视机提供一个子工厂,如:海尔工厂专门负责生产海尔电视机,海信工厂专门负责生产海信电视机,如果需要生产TCL电视机或创维电视机,只需要对应增加一个新的TCL工厂或创维工厂即可,原有的工厂无须做任何修改,使得整个系统具有更加的灵活性和可扩展性。类图:说明:此类图由Visual studio 2012根据源码自动生成,Program可视为调用工厂的Client。由类图可见我单独为电视产品申明了一个顶层的抽象类,之后是海尔和海信各自的产品抽象类,然后具体的产品类由各自的产商自己实现。同时产品的工厂类也是由一个顶
阅读全文
摘要:1. 适用性在以下情况可以使用AbstractFactory模式• 一个系统要独立于它的产品的创建、组合和表示时。• 一个系统要由多个产品系列中的一个来配置时。• 当你要强调一系列相关的产品对象的设计以便进行联合使用时。• 当你提供一个产品类库,而只想显示它们的接口而不是实现时。2. 参与者• A b s t r a c t Fa c t o r y — 声明一个创建抽象产品对象的操作接口。• C o n c r e t e Fa c t o r y — 实现创建具体产品对象的操作。• A b s t r a c t Pr o d u c t — 为一类产品对象声明一个接口。• C o n c
阅读全文
摘要:桥接模式很像适配器模式,都是使用类把一个借口转换成另一种接口。但是,适配器的意图是是使得一个或多个类的接口与某个特定类的接口看起来很像,而桥接模式的设计目的是分离类的接口和实现,这样可以改变或是更换实现而无需修改客户端的代码。adapter模式是用来帮助无关的类协同工作,它通常在系统设计完成后才会被使用。bridge模式则是在系统开始的时候就被使用,它使得抽象接口和实现的部分可以独立进行改变。桥接模式的用意是"将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者可以独立地变化"。这句话有三个关键词,也就是抽象化、实现化和脱耦。桥接模式的参
阅读全文
摘要:在面向对象的过程中,常用的两个功能复用是类继承和组合(object composition)。类继承允许你根据其他类的实现来定义一个类的实现。这种通过生成子类的复用通常被称为白箱复用(white-box reuse)。术语“白箱”是相对可视性而言的,在继承方式中,父类的内部细节对子类可见。新的更复杂的功能可以通过组装或组合对象来获得。对象组合要求被组合的对象具有良好定义的接口。这种复用风格被称为黑箱复用(black-box reuse),因为对象的内部细节是不可见的。类继承的优点和不足之处:类继承是在编译时刻静态定义的,且可直接使用,程序设计语言直接支持类继承。类继承可以较方便地改变被复用的实
阅读全文

浙公网安备 33010602011771号