Design Pattern
zhongjiekangping
热爱技术,追逐但不狂热...... 比较喜欢探索自己的未知领域,喜欢了解各种编程环境和领域,平时也比较喜欢阅读,用心的阅读可以使人沉淀。
展开
-
设计模式概念
在面向对象的编程中,软件编程人员更加注重以前的代码的重用性和可维护性。设计模式使人们可以更加简单方便地复用成功的设计和体系结构。将已证实的技术表述成设计模式也会使新系统开发者更加容易理解其设计思路。一般而言,一个模式有四个基本要素1. 模式名称(pattern name) 一个助记名,2. 问题(problem) 描述了应该在何时使用模式。它解释了设计问题和问题存在的前因后果,它可转载 2009-09-14 10:48:00 · 518 阅读 · 0 评论 -
Composite组合模式
Composite组合模式主要是应对这样的问题:一类具有“容器特征”的对象——即他们在充当对象的同时,又是其他对象的容器的情况。在编写时我们常常会造成:客户代码过多地依赖于对象容器复杂的内部实现,对象容器内部实现结构(而非抽象接口)的变化将引起客户代码的频繁变化,带来了代码的维护性、扩展性的弊端。 GoF《设计模式》中说到:将对象组合成树形结构以表示“部分-整体”的层次结构。C转载 2009-11-16 21:46:00 · 445 阅读 · 0 评论 -
结构型设计模式
结构型设计模式是从程序的结构上解决模块之间的耦合问题(好像是句废话),GoF23种设计模式中结构型设计模式有7种,分别是:Adapter适配器模式、Bridge桥接模式、Composite组合模式、Decorator装饰模式、Facade外观模式、Flyweight享元模式和Proxy代理模式。下面分别总结一下这几种模式:设计模式 GoF的描述 我的理解 Adapter适配器模式 将一个类的转载 2009-11-16 21:48:00 · 580 阅读 · 1 评论 -
Adapter适配器模式
Adapter适配器模式是一种结构型模式,主要应对:由于应用环境的变化,常常需要将“一些现存的对象”放在新的环境中应用,但是,新环境要求的接口是现存对象所不满足的。 《设计模式》中说道:将一个类的接口转换成客户希望的另一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的类可以一起工作。 在实际的生活中有很多例子,如:我们常使用的移动硬盘,转载 2009-11-16 21:33:00 · 450 阅读 · 0 评论 -
Facade外观模式
Facade外观模式,是一种结构型模式,它主要解决的问题是:组件的客户和组件中各种复杂的子系统有了过多的耦合,随着外部客户程序和各子系统的演化,这种过多的耦合面临很多变化的挑战。Facade设计模式更注重从架构的层次去看整个系统,而不是单个类的层次。 Facade外观模式,是一种结构型模式,它主要解决的问题是:组件的客户和组件中各种复杂的子系统有了过多的耦合,随着外部客户程序和各子系统转载 2009-11-16 21:36:00 · 483 阅读 · 0 评论 -
Flyweight设计模式
Flyweight设计模式主要解决面向对象的代价问题,一般不触及面向对象的抽象性问题。Flyweight采用对象共享的做法来降低系统中对象的个数,从而降低细粒度对象给系统带来的内存压力。在具体实现方面,要注意对象的状态处理。 Flyweight享元设计模式是一种结构型设计模式,它主要解决的问题是:由于(同类)对象的数量太大,采用面向对象时给系统带来了难以承受的内存开销。比如有这样转载 2009-11-16 21:38:00 · 631 阅读 · 0 评论 -
Bridge桥接模式
概述在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?如何利用面向对象的技术来使得该类型能够轻松的沿着多个方向进行变化,而又不引入额外的复杂度?这就要使用Bridge模式。意图将抽象部分与实现部分分离,使它们都可以独立的变化。[GOF 《设计模式》]结构图图1 Bridge模式结构图生活中的例子桥接模式将抽象部转载 2009-11-18 11:26:00 · 959 阅读 · 0 评论 -
开放-封闭原则
2.3.1 引言 无论如何,开放封闭原则(OCP,Open Closed Principle)都是所有面向对象原则的核心。软件设计本身所追求的目标就是封装变化、降低耦合,而开放封闭原则正是对这一目标的最直接体现。其他的设计原则,很多时候是为实现这一目标服务的,例如以Liskov替换原则实现最佳的、正确的继承层次,就能保证不会违反开放封闭原则。2.3.2 引经据典转载 2009-11-18 11:47:00 · 749 阅读 · 0 评论 -
单一职责原则
2.2 单一职责原则 2.2.1 引言 一个优良的系统设计,强调模块间保持低耦合、高内聚的关系,在面向对象设计中这条规则同样适用,所以面向对象的第一个设计原则就是:单一职责原则(SRP,Single Responsibility Principle)。 单一职责,强调的是职责的分离,在某种程度上对职责的理解,构成了不同类之间耦合关系的设计关键,因此单转载 2009-11-18 11:48:00 · 1961 阅读 · 2 评论 -
高效率测试之巧用策略模式
None转载 2010-06-12 10:48:00 · 943 阅读 · 0 评论 -
Proxy模式
具体proxy设计模式的实现方法、实现粒度都相差很大,有些可能对单个对象作细粒度的控制,有些可能对组件模块提供抽象代理层,在架构层次对对象作proxy。proxy并不一定要求保持接口的一致性,只要能够实现间接控制,有时候损及一些透明性是可以接受的。 Proxy代理模式是一种结构型设计模式,主要解决的问题是:在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上转载 2009-11-16 21:35:00 · 1418 阅读 · 0 评论 -
Decorator装饰模式
Decorator装饰模式是一种结构型模式,它主要是解决:过度地使用了继承来扩展对象的功能。就增加功能而言,Decorator模式比生成子类更为灵活。 Decorator装饰模式是一种结构型模式,它主要是解决:“过度地使用了继承来扩展对象的功能”,由于继承为类型引入的静态特质,使得这种扩展方式缺乏灵活性;并且随着子类的增多(扩展功能的增多),各种子类的组合(扩展功能的组合)会导致更多子类的膨转载 2009-11-16 21:34:00 · 528 阅读 · 0 评论 -
singleton 单件模式
首先说说单件模式产生的动机,也就是为什么会出现单件模式。有一些类在系统中只存在一个实例才能确保他们的逻辑正确性以及良好的效率。这时我想到我遇到的一个问题。我曾经遇到一个WinForm程序,运行后出现一个登陆框,输入用户名密码后点击登陆,然后显示一个登陆后的界面。但是点击登陆后,程序要做一些操作,由于这段操作用时相对较长,在不经意时,我有点击了一次登陆按钮,最后出现了两个对话框。如:我转载 2009-10-28 17:23:00 · 544 阅读 · 0 评论 -
模式趣解
创建型模式 1、FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Factory 工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。如:如何创建及如转载 2009-09-14 10:52:00 · 425 阅读 · 0 评论 -
面向对象 设计模式 纲要
今天听了《C#面向对象设计模式纵横谈(1):面向对象设计模式与原则》课程。总结了一些笔记。 首先介绍了什么是设计模式:设计模式描述了软件设计过程中某一类常见问题的一般性的解决方案。 下面主要讨论面向对象设计模式。 面向对象设计模式描述了类与相互通信的对象之间的组织关系。目的是应对变化、提高复用、减少改变。 那到底什么是对象: 1、从概念层面讲,对象是某种拥有职责的抽象; 2、从规格层面讲转载 2009-09-14 10:56:00 · 366 阅读 · 0 评论 -
创建型模式的总结
在学习的过程中,觉得从功能上看Abstract Factory模式和Builder模式容易混淆,Factory Method模式和Prototype模式不好区分。Singleton模式没什么太大的困难。 GoF23种设计模式中创建型模式有5种,分别是:Singleton单件模式、Abstract Factory抽象工厂模式、Builder生成器模式、Factory M转载 2009-09-14 10:57:00 · 548 阅读 · 0 评论 -
Simple Factory 简单工厂模式
简单工厂模式(Simple Factory Pattern)介绍:简单工厂模式不能说是一个设计模式,说它是一种编程习惯可能更恰当些。因为它至少不是Gof23种设计模式之一。但它在实际的编程中经常被用到,而且思想也非常简单,可以说是工厂方法模式的一个引导,所以我想有必要把它作为第一个讲一下。引入:我们在编程的时候,每当"new"一个对象之后,这个对象就依赖于这个类了。如果在后期的维护过转载 2009-09-14 11:02:00 · 448 阅读 · 0 评论 -
Abstract Factory 抽象工厂模式
工厂模式中有: 工厂方法(Factory Method) 抽象工厂(Abstract Factory). 这两个模式没有很明显的区别,区别在于需要创建对象的复杂程度上。如果我们创建对象的方法变得复杂了,我们就可能要将上例中Factory变成抽象类,将共同部分封装在抽象类中,不同部分使用子类实现。下面关于是在网络中查到关于工厂方法模式与抽象工厂模式的概述和区别:工厂转载 2009-09-14 11:04:00 · 658 阅读 · 0 评论 -
FactoryMethod 工厂方法模式
工厂方法(FactoryMethod)模式是类的创建模式,其用意是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中。工厂方法模式是简单工厂模式的进一步抽象和推广。由于使用了多态性,工厂方法模式保持了简单工厂模式的优点,而且克服了它的缺点。在工厂方法模式中,核心的工厂类不再负责所有产品的创建,而是将具体创建工作交给子类去做。这个核心类仅仅负责给出具体工厂必须实现的接口,而不接触哪一转载 2009-09-14 11:05:00 · 572 阅读 · 0 评论 -
Builder模式
Builder模式的结构: 建造者(Builder)角色:给出一个抽象接口,以规范产品对象的各个组成成分的建造。一般而言,此接口独立于应用程序的商业逻辑。模式中直接创建产品对象的是具体建造者(ConcreteBuilder)角色。具体建造者类必须实现这个接口所要求的方法:一个是建造方法,另一个是结果返还方法。具体建造者(Concrete Builder)角色:担任这个角色的是于应用程转载 2009-09-16 11:37:00 · 4586 阅读 · 1 评论 -
Net中的设计模式——Factory Method模式
一、模式概述也许Factory Method模式是设计模式中应用最广泛的模式。在面向对象的设计中,关于对象的管理是其核心所在,而其中对象的创建则是对象管理的第一步。对象的创建非常简单,在C#中,只需要应用new操作符调用对象的构造函数即可,然而创建对象的时机却非常重要。 首先我们从对象的特征来看,代表抽象关系的类型,如接口和抽象类,是不能创建的,换句话说,我们要创建的对象都是与具体的转载 2009-10-28 20:01:00 · 496 阅读 · 0 评论 -
Prototype 原型模式
Prototype原型模式是一种创建型设计模式,它主要面对的问题是:某些结构复杂的对象的创建工作;由于需求的变化,这些对象经常面临着剧烈的变化,但是他们却拥有比较稳定一致的接口 Prototype原型模式是一种创建型设计模式,它主要面对的问题是:“某些结构复杂的对象”的创建工作;由于需求的变化,这些对象经常面临着剧烈的变化,但是他们却拥有比较稳定一致的接口。感觉好像和前转载 2009-10-28 17:16:00 · 586 阅读 · 0 评论 -
observer, pull or push?
1. 解决的问题: 假如现在要编写一个天气预报的公布栏, 公布栏有两种显示方式, 一种是图像方式显示, 一种是表格形式显示. 2. 问题分析: 应该根据数据与现实分离的原则将天气预报数据和现实形式分别封装起来, 今后可能增加其他的显示形式; 天气预报数据发生变化后,需要对所有的显示形式进行更新. 3. UML图与代码实现: 1)用Push的方式更转载 2011-10-25 10:33:38 · 1363 阅读 · 0 评论