设计模式
peterzeng20210530
shopify新道路
展开
-
.NET设计模式(3):抽象工厂模式(Abstract Factory)
——探索设计模式系列之三Terrylee,2005年12月12日概述在软件系统中,经常面临着“一系列相互依赖的对象”的创建工作;同时由于需求的变化,往往存在着更多系列对象的创建工作。如何应对这种变化?如何绕过常规的对象的创建方法(new),提供一种“封装机制”来避免客户程序和这种“多系列具体对象创建工作”的紧耦合?这就是我们要说的抽象工厂模式。意图提供一个创建一系列相关或相互依转载 2009-02-14 10:10:00 · 909 阅读 · 0 评论 -
.NET设计模式(15):结构型模式专题总结
——探索设计模式系列之十五Terrylee,2006年5月摘要:结构型模式,顾名思义讨论的是类和对象的结构,它采用继承机制来组合接口或实现(类结构型模式),或者通过组合一些对象,从而实现新的功能(对象结构型模式)。这些结构型模式,它们在某些方面具有很大的相似性,仔细推敲,侧重点却各有不同。本文试图对这几种结构型模式做一个简单的小结。 主要内容1.结构型模式概述2.结构型转载 2009-02-14 22:33:00 · 567 阅读 · 0 评论 -
.NET设计模式(18):迭代器模式(Iterator Pattern)
概述在面向对象的软件设计中,我们经常会遇到一类集合对象,这类集合对象的内部结构可能有着各种各样的实现,但是归结起来,无非有两点是需要我们去关心的:一是集合内部的数据存储结构,二是遍历集合内部的数据。面向对象设计原则中有一条是类的单一职责原则,所以我们要尽可能的去分解这些职责,用不同的类去承担不同的职责。Iterator模式就是分离了集合对象的遍历行为,抽象出一个迭代器类来负责,这样既可以做到不转载 2009-02-14 22:42:00 · 586 阅读 · 0 评论 -
.NET设计模式(6):原型模式(Prototype Pattern)
原型模式(Prototype Pattern)——.NET设计模式系列之六Terrylee,2006年1月概述在软件系统中,有时候面临的产品类是动态变化的,而且这个产品类具有一定的等级结构。这时如果用工厂模式,则与产品类等级结构平行的工厂方法类也要随着这种变化而变化,显然不大合适。那么如何封装这种动态的变化?从而使依赖于这些易变对象的客户程序不随着产品类变化? 意图用原型实转载 2009-02-14 22:44:00 · 645 阅读 · 0 评论 -
中介者模式(Mediator pattern)
依赖关系的转化: 动机(Motivate): 在软件构建过程中,经常会出现多个对象互相关联交互的情况,对象之间常常会维持一种复杂的引用关系,如果遇到一些需求的更改,这种直接的引用关系将面临不断的变化。 在这种情况下,我们可使用一个“中介对象”来管理对象间的关联关系,避免相互交互的对象之间的紧耦合引用关系,从而更好地抵御变化。意图(Intent): 用一个中介对转载 2009-02-14 22:54:00 · 541 阅读 · 0 评论 -
.NET设计模式(20):解释器模式(Interpreter Pattern)
动机(Motivate): 在软件构建过程中,如果某一特定领域的问题比较复杂,类似的模式不断重复出现,如果使用普通的编程方式来实现将面临非常频繁的变化。 在这种情况下,将特定领域的问题表达为某种文法规则下的句子,然后构建一个解释器来解释这样的句子,从而达到解决问题的目的。意图(Intent): 给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言转载 2009-02-15 12:13:00 · 649 阅读 · 0 评论 -
.NET设计模式(22):策略模式(Strategy Pattern)
一 通过实例认识策略模式 首先让我们来说明一个问题,在软件业惟一不变的是什么呢?是变化。这是不是有点冷笑话的感觉?不管怎样,这就是事实,要想在软件行业混,我们就必须得接受这一点,我想绝大多数的程序员也是接受了这一点的,要不为什么有程序员是体力劳动者这一方法呢(当然变化只是造成程序员繁重工作的一个主要点,并不是全部原因)? 人的天性总是懒惰的,既然变化转载 2009-02-15 12:31:00 · 1185 阅读 · 1 评论 -
.NET设计模式(23): 职责链模式(Chain of Responsibility Pattern)
一、 职责链(Chain of Responsibility)模式责任链模式是一种对象的行为模式【GOF95】。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织链和分配责任。从击鼓传花谈起转载 2009-02-15 13:06:00 · 767 阅读 · 0 评论 -
.NET设计模式(24):访问者模式(Visitor Pattern)
察看下面的示例,假设我们将交通工具作为父类,汽车、船和飞机作为子类,结构如图 代码如下:using System;using System.Collections.Generic;using System.Text;namespace VisitorPattern.ex34_0{ public class Vehicle { public virtual转载 2009-02-15 13:11:00 · 915 阅读 · 0 评论 -
.NET设计模式(16):模版方法(Template Method)
摘要:Template Method模式是比较简单的设计模式之一,但它却是代码复用的一项基本的技术,在类库中尤其重要。 主要内容1.概述2.Template Method解说3..NET中的Template Method模式4.适用性及实现要点 概述变化一直以来都是软件设计的永恒话题,在XP编程中提倡拥抱变化,积极应对。如何更好的去抓住变化点,应对转载 2009-02-14 22:33:00 · 588 阅读 · 0 评论 -
.NET设计模式(19):观察者模式(Observer Pattern)
概述在软件构建过程中,我们需要为某些对象建立一种“通知依赖关系” ——一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知。如果这样的依赖关系过于紧密,将使软件不能很好地抵御变化。使用面向对象技术,可以将这种依赖关系弱化,并形成一种稳定的依赖关系。从而实现软件体系结构的松耦合。意图定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时, 所有依赖于它的对象转载 2009-02-14 22:43:00 · 512 阅读 · 0 评论 -
.NET设计模式(19):观察者模式(Observer Pattern)
概述在软件构建过程中,我们需要为某些对象建立一种“通知依赖关系” ——一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知。如果这样的依赖关系过于紧密,将使软件不能很好地抵御变化。使用面向对象技术,可以将这种依赖关系弱化,并形成一种稳定的依赖关系。从而实现软件体系结构的松耦合。意图定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时, 所有依赖于它的对象转载 2009-02-14 22:57:00 · 665 阅读 · 0 评论 -
.NET设计模式(19):备忘录模式(Memento Pattern)
备忘录模式在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。[1] 备忘录模式(Memento Pattern)应用于保存和跟踪对象的状态,以便于必要的时候可以把对象恢复到以前的状态。备忘录模式可以为一个对象提供状态存储和状态恢复的手段。 一个备忘录是一个对象,这个对象保持了一些状态信息。转载 2009-02-15 11:55:00 · 838 阅读 · 0 评论 -
.NET设计模式(14):代理模式(Proxy Pattern)
代理模式(Proxy Pattern)——.NET设计模式系列之十四Terrylee,2006年5月摘要:在软件系统中,有些对象有时候由于跨越网络或者其他的障碍,而不能够或者不想直接访问另一个对象,如果直接访问会给系统带来不必要的复杂性,这时候可以在客户程序和目标对象之间增加一层中间层,让代理对象来代替目标对象打点一切。这就是本文要说的Proxy模式。 主要内容1.例说Pr转载 2009-02-14 22:31:00 · 975 阅读 · 0 评论 -
.NET设计模式(13):享元模式(Flyweight Pattern)
享元模式(Flyweight Pattern)——.NET设计模式系列之十三Terrylee,2006年3月摘要:面向对象的思想很好地解决了抽象性的问题,一般也不会出现性能上的问题。但是在某些情况下,对象的数量可能会太多,从而导致了运行时的代价。那么我们如何去避免大量细粒度的对象,同时又不影响客户程序使用面向对象的方式进行操作?本文试图通过一个简单的字符处理的例子,运用重构的手转载 2009-02-14 22:30:00 · 556 阅读 · 0 评论 -
.NET设计模式(4):建造者模式(Builder Pattern)
——.NET设计模式系列之四Terrylee,2005年12月17日概述在软件系统中,有时候面临着“一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法确相对稳定。如何应对这种变化?如何提供一种“封装机制”来隔离出“复杂对象的各个部分”的变化,从而保持系统中的 “稳定构建算法”不随着需转载 2009-02-14 14:58:00 · 1155 阅读 · 0 评论 -
.NET设计模式(8):适配器模式(Adapter Pattern)
适配器模式(Adapter Pattern)——.NET设计模式系列之八Terrylee,2006年2月概述在软件系统中,由于应用环境的变化,常常需要将“一些现存的对象”放在新的环境中应用,但是新环境要求的接口是这些现存对象所不满足的。那么如何应对这种“迁移的变化”?如何既能利用现有对象的良好实现,同时又能满足新的应用环境所要求的接口?这就是本文要说的Adapter 模式。意图原创 2009-02-14 22:15:00 · 511 阅读 · 0 评论 -
.NET设计模式(11):组合模式(Composite Pattern)
组合模式(Composite Pattern)——.NET设计模式系列之十一Terrylee,2006年3月概述组合模式有时候又叫做部分-整体模式,它使我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以向处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦。意图将对象组合成树形结构以表示“部分-整体”的层次结构。Composite模式使得转载 2009-02-14 22:24:00 · 567 阅读 · 0 评论 -
.NET设计模式(17):命令模式(Command Pattern)
命令模式(Command Pattern)——.NET设计模式系列之十七TerryLee,2006年7月概述在软件系统中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”。但在某些场合,比如要对行为进行“记录、撤销/重做、事务”等处理,这种无法抵御变化的紧耦合是不合适的。在这种情况下,如何将“行为请求者”与“行为实现者”解耦?将一组行为抽象为对象,可以实现二者之间的松耦合[转载 2009-02-14 22:38:00 · 681 阅读 · 0 评论 -
.NET设计模式(21): 状态模式(State Pattern)
作者:webabcd介绍允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它所属的类。示例有一个Message实体类,对它的操作有Insert()和Get()方法,持久化数据在SqlServer数据库中或Xml文件里。在对象内部可以根据用户的不同选择不同的数据持久化方案。MessageModelusing System;usin转载 2009-02-15 12:25:00 · 601 阅读 · 0 评论 -
.NET设计模式(25):设计模式学习笔记
模式是一种对现实世界的概念抽象,建筑模式,设计模式,营销模式,商业运作模式各行各业都有自己的模式。 这里说的设计模式是软件设计里的模式,主要是指面向对象的软件设计。遵照设计模式,可以有效的提高软件的可维护性和可复用性,提高开发软件的效率,避免过多的出现再造轮子的现象。 我学习模式是从知道大名顶顶的四人帮的力作《设计模式》,真正感觉到了设计模式给软件设计所带来的诸多好处。《设计模式》原创 2009-02-15 13:31:00 · 777 阅读 · 0 评论 -
.NET设计模式(1):.NET设计模式系列文章
转载李会军http://www.cnblogs.com/Terrylee/archive/2006/07/17/334911.html博客内容。 最初写探索设计模式系列的时候,我只是想把它作为自己学习设计模式的读书笔记来写,可是写到今天,设计模式带给我的震撼,以及许多初学者朋友的热心支持,让我下定决心要把这个系列写完写好,那怕花上再多的时间也无所谓。本部分内容不断更新中。目录计划:转载 2009-02-14 08:57:00 · 959 阅读 · 0 评论 -
.NET设计模式(2):单件模式(Singleton Pattern)
——.NET设计模式系列之二 Terrylee,2005年12月07日 概述 Singleton模式要求一个类有且仅有一个实例,并且提供了一个全局的访问点。这就提出了一个问题:如何绕过常规的构造器,提供一种机制来保证一个类只有一个实例?客户程序在调用某一个类时,它是不会考虑这个类是否只能有一个实例等问题的,所以,这应该是类设计者的责任,而不是类使用者的责任。 从另一个角度来说,Si转载 2009-02-14 09:03:00 · 668 阅读 · 0 评论 -
.NET设计模式(5):工厂方法模式(Factory Method)
——.NET设计模式系列之五Terrylee,2004年1月2日概述在软件系统中,经常面临着“某个对象”的创建工作,由于需求的变化,这个对象的具体实现经常面临着剧烈的变化,但是它却拥有比较稳定的接口。如何应对这种变化?提供一种封装机制来隔离出“这个易变对象”的变化,从而保持系统中“其它依赖该对象的对象”不随着需求的改变而改变?这就是要说的Factory Method模式了。意图转载 2009-02-14 21:50:00 · 901 阅读 · 0 评论 -
.NET设计模式(7):创建型模式专题总结(Creational Pattern)
创建型模式专题总结(Creational Pattern)——.NET设计模式系列之七Terrylee,2006年1月概述创建型模式,就是用来创建对象的模式,抽象了实例化的过程。它帮助一个系统独立于如何创建、组合和表示它的那些对象。本文对五种常用创建型模式进行了比较,通过一个游戏开发场景的例子来说该如何使用创建型模式。为什么需要创建型模式所有的创建型模式都有两个永恒的主旋律转载 2009-02-14 22:09:00 · 576 阅读 · 0 评论 -
.NET设计模式(9):桥接模式(Bridge Pattern)
桥接模式(Bridge Pattern)——.NET设计模式系列之九Terrylee,2006年2月概述在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?如何利用面向对象的技术来使得该类型能够轻松的沿着多个方向进行变化,而又不引入额外的复杂度?这就要使用Bridge模式。意图将抽象部分与实现部分分离,使它们都可以独立的变化。转载 2009-02-14 22:18:00 · 608 阅读 · 0 评论 -
.NET设计模式(10):装饰模式(Decorator Pattern)
装饰模式(Decorator Pattern)——.NET设计模式系列之十Terrylee,2006年3月概述在软件系统中,有时候我们会使用继承来扩展对象的功能,但是由于继承为类型引入的静态特质,使得这种扩展方式缺乏灵活性;并且随着子类的增多(扩展功能的增多),各种子类的组合(扩展功能的组合)会导致更多子类的膨胀。如何使“对象功能的扩展”能够根据需要来动态地实现?同时避免“扩展功能转载 2009-02-14 22:21:00 · 566 阅读 · 0 评论 -
UML用例图(1)
用例图用来确定需求的范围,这些需求是设计开发的依据。用例图将系统看作黑盒,从外部执行者的角度来理解系统。如图12.2所示,图中的用例是用户与计算机之间的一次典型 图12.2 公告管理系统的用例图交互作用,在UML中,用例表示为一个椭圆。执行者是指用户在系统中所扮演的角色。其图形化的表示是一个小人。这里需要注意的是,执行者在用例图中是用类似人的图转载 2009-02-15 16:42:00 · 1347 阅读 · 0 评论