随笔分类 -  设计----设计模式

摘要:一、引言 前面主题介绍的状态模式是对某个对象状态的抽象,而本文要介绍的策略模式也就是对策略进行抽象,策略的意思就是方法,所以也就是对方法的抽象,下面具体分享下我对策略模式的理解。二、策略者模式介绍2.1 策略模式的定义 在现实生活中,策略模式的例子也非常常见,例如,中国的所得税,分为企业所得税、... 阅读全文
posted @ 2015-05-20 14:59 awp110 阅读(214) 评论(0) 推荐(0)
摘要:设计模式----建造者模式(Builder Pattern)概述:在软件系统中,有时候面临着“一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法确相对稳定。如何应对这种变化?如何提供一种“封装机制”来隔离出“复杂对象的各个部分”的变化,从而保持系统中的“稳定构建算法”不随着需求改变而改变?这就是要说的建造者模式。现实中的例子:就拿学校来说吧,每到期末考试完成之后,老师要批改试卷,得到每个学生的期末考试成绩,而老师批改试卷这个过程不变化的,都要经过(批改试卷、统计分数、把分数上传到教务处)。每 阅读全文
posted @ 2011-10-21 14:17 awp110 阅读(227) 评论(0) 推荐(0)
摘要:学习设计模式也有一段时间了,今天就把我整理的一篇课程和大家分享,有不妥之处欢迎指出.生活中的一个例子: 就拿汽车在路上行驶的来说。即有小汽车又有公共汽车,它们都不但能在市区中的公路上行驶,也能在高速公路上行驶。这你会发现,对于交通工具(汽车)有不同的类型,然而它们所行驶的环境(路)也在变化,在软件系统中就要适应两个方面的变化?怎样实现才能应对这种变化呢?概述:在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?如何利用面向对象的技术来使得该类型能够轻松的沿着多个方向进行变化,而又不引入额外的复杂度?这就要使用Bridge模式。意图: 将抽象部.. 阅读全文
posted @ 2011-10-21 14:10 awp110 阅读(172) 评论(0) 推荐(0)
摘要:桥接(Bridge)模式是结构型模式的一种,而策略(strategy)模式则属于行为模式。以下是它们的UML结构图。在桥接模式中,Abstraction通过聚合的方式引用Implementor。 在策略模式中,Context也使用聚合的方式引用Startegy抽象接口。 从他们的结构图可知,在这两种模式中,都存在一个对象使用聚合的方式引用另一个对象的抽象接口的情况,而且该抽象接口的实现可以有多种... 阅读全文
posted @ 2010-04-08 14:59 awp110 阅读(375) 评论(0) 推荐(0)
摘要:当主体发生变化时 观察其的对象也会发生相应的变化。观察者模式定义了对象间的一种一对多依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新) 阅读全文
posted @ 2010-03-18 11:03 awp110 阅读(204) 评论(0) 推荐(0)
摘要:作者:张传波软件知识大学 首席专家www.umlonline.cn/school/什么是设计模式?设计模式,英文名字叫Design Pattern,这个“Pattern”硬生生地给翻译成“模式”,徒增了很多人的理解难度。话说回来,我也不知道咋翻译好,反正设计模式这个说法说得多了,也就习惯了。设计模式就是一些软件设计高手总结后得出的一些设计经验总结,目... 阅读全文
posted @ 2010-03-18 10:46 awp110 阅读(197) 评论(0) 推荐(0)
摘要:简单工厂,工厂方法,抽象工厂都属于设计模式中的创建型模式。其主要功能都是帮助我们把对象的实例化部分抽取了出来,优化了系统的架构,并且增强了系统的扩展性。本文是本人对这三种模式学习后的一个小结以及对他们之间的区别的理解。简单工厂 简单工厂模式的工厂类一般是使用静态方法,通过接收的参数的不同来返回不同的对象实例。不修改代码的话,是无法扩展的。工厂方法 工厂方法是针对每一种产品提供一个工厂类。通过不同的... 阅读全文
posted @ 2010-03-18 10:01 awp110 阅读(319) 评论(0) 推荐(0)
摘要:我地理解:主要是为了现实某一功能和方法,所采用的不同实现方式。将不同的实现方式抽象出共同的借口,在它的继承类中实现具体的方式。这样如果有新的实现方式只要继承其借口实现它即可,不会对其他已经存在的策略造成影响。也即是:策略(策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。) 应用场景:需要在不同情况下使用不同的策略(算法),或... 阅读全文
posted @ 2010-03-18 09:22 awp110 阅读(247) 评论(0) 推荐(1)
摘要:Net提供了接口,这个不同于Class或者Struct的类型定义。接口有些情况,看似和抽象类一样,因此有些人认为在.Net可以完全用接口来替换抽象类。其实不然,接口和抽象类各有长处和缺陷,因此往往在应用当中,两者要结合来使用,从而互补长短。 接下来先说说抽象类和接口的区别。区别一,两者表达的概念不一样。抽象类是一类事物的高度聚合,那么对于继承抽象类的子类来说,对于抽象类来说,属于“是&... 阅读全文
posted @ 2010-03-14 10:53 awp110 阅读(205) 评论(0) 推荐(1)
摘要:作者以轻松的语言比喻了java的23种模式,有很好的启发作用。 创建型模式 1、FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Factory 工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂... 阅读全文
posted @ 2009-08-04 11:43 awp110 阅读(169) 评论(0) 推荐(0)
摘要:[代码] 阅读全文
posted @ 2009-06-19 13:22 awp110 阅读(121) 评论(0) 推荐(0)
摘要:设想这样一个需求,我们需要为自己的框架提供一个负责排序的组件。目前需要实现的是冒泡排序算法和快速排序算法,根据“面向接口编程”的思想,我们可以为这些排序算法提供一个统一的接口ISort,在这个接口中有一个方法Sort(),它能接受一个object数组参数。对数组进行排序后,返回该数组。接口的定义如下: public interface ISort { ... 阅读全文
posted @ 2009-03-19 10:10 awp110 阅读(203) 评论(0) 推荐(0)
摘要:考虑一个日志记录工具。目前需要提供一个方便的日志API,使得客户可以轻松地完成日志的记录。该日志要求被记录到指定的文本文件中,记录的内容属于字符串类型,其值由客户提供。我们可以非常容易地定义一个日志对象: public class Log { public void Write(string target, string log) { //实现内容; } }... 阅读全文
posted @ 2009-03-19 10:09 awp110 阅读(211) 评论(0) 推荐(0)