随笔分类 -  设计模式

摘要:参考:http://www.cnblogs.com/zhili/p/ChainOfResponsibity.html 一、引言 在现实生活中,有很多请求并不是一个人说了就算的,例如面试时的工资,低于1万的薪水可能技术经理就可以决定了,但是1万~1万5的薪水可能技术经理就没这个权利批准,可能就需要请求 阅读全文
posted @ 2018-06-14 17:45 学亮 阅读(228) 评论(0) 推荐(0) 编辑
摘要:参考:https://www.cnblogs.com/edisonchou/p/7247990.html 在患者就医时,医生会根据病情开具处方单,很多医院都会存在以下这个流程:划价人员拿到处方单之后根据药品名称和数量计算总价,而药房工作人员根据药品名称和数量准备药品,如下图所示。 在软件开发中,有时 阅读全文
posted @ 2018-06-14 15:39 学亮 阅读(309) 评论(0) 推荐(0) 编辑
摘要:转:http://terrylee.cnblogs.com/archive/2006/03/29/361767.html 摘要:面向对象的思想很好地解决了抽象性的问题,一般也不会出现性能上的问题。但是在某些情况下,对象的数量可能会太多,从而导致了运行时的代价。那么我们如何去避免大量细粒度的对象,同时 阅读全文
posted @ 2018-06-12 16:36 学亮 阅读(223) 评论(0) 推荐(0) 编辑
摘要:假如我们已经记录一个人的个人信息,但是发现信息写错了,然后我先备份下再去修改,结果发现原来的信息是正确的,于是我就看备份的个人信息还原到初始的状态,下面我们用代码去实现class Program { static void Main(string[] args) {... 阅读全文
posted @ 2014-11-06 13:08 学亮 阅读(724) 评论(0) 推荐(0) 编辑
摘要:转载地址:http://www.cnblogs.com/zhili/p/MediatorPattern.html一、引言 在现实生活中,有很多中介者模式的身影,例如QQ游戏平台,聊天室、QQ群和短信平台,这些都是中介者模式在现实生活中的应用,下面就具体分享下我对中介者模式的理解。二、 中介者模式的... 阅读全文
posted @ 2014-10-15 15:04 学亮 阅读(194) 评论(0) 推荐(0) 编辑
摘要:参考地址:http://www.cnblogs.com/zhili/p/IteratorPattern.html一、介绍迭代器是针对集合对象而生的,对于集合对象而言,必然涉及到集合元素的添加删除操作,同时也肯定支持遍历集合元素的操作,我们此时可以把遍历操作也放在集合对象中,但这样的话,集合对象就承担... 阅读全文
posted @ 2014-10-11 16:36 学亮 阅读(151) 评论(0) 推荐(0) 编辑
摘要:参考地址:http://www.cnblogs.com/zhili/p/DecoratorPattern.html一、定义:装饰者模式以对客户透明的方式动态地给一个对象附加上更多的责任,装饰者模式相比生成子类可以更灵活地增加功能。 二、装饰者模式实现在软件开发中,我们往往会想要给某一类对象增加不同的... 阅读全文
posted @ 2014-10-11 13:54 学亮 阅读(191) 评论(0) 推荐(0) 编辑
摘要:参考地址:http://terrylee.cnblogs.com/archive/2006/02/24/336652.html概述在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?如何利用面向对象的技术来使得该类型能够轻松的沿着多个方向进行变化,而又... 阅读全文
posted @ 2014-10-11 11:24 学亮 阅读(219) 评论(0) 推荐(0) 编辑
摘要:参考链接:http://www.cnblogs.com/zhili/p/AdapterPattern.html一、定义:将一个类的接口转换成客户希望的另一个接口。Adapter模式使得原本由于接口不兼容而不能在一起工作的那些类可以一起工作。适配器模式有类的适配器模式和对象的适配器模式两种形式。二、类... 阅读全文
posted @ 2014-10-08 17:14 学亮 阅读(183) 评论(0) 推荐(0) 编辑
摘要:转载地址:http://www.cnblogs.com/zhili/p/StragetyPattern.html一、引言 本文要介绍的策略模式也就是对策略进行抽象,策略的意思就是方法,所以也就是对方法的抽象,下面具体分享下我对策略模式的理解。二、策略者模式介绍2.1 策略模式的定义 在现实生活中... 阅读全文
posted @ 2014-09-30 14:04 学亮 阅读(221) 评论(0) 推荐(0) 编辑
摘要:一.命令模式的定义命令模式属于对象的行为型模式。命令模式是把一个操作或者行为抽象为一个对象中,通过对命令的抽象化来使得发出命令的责任和执行命令的责任分隔开。命令模式的实现可以提供命令的撤销和恢复功能。二.我们来看一个类图从命令模式的结构图可以看出,它涉及到五个角色,它们分别是:客户角色:发出一个具体... 阅读全文
posted @ 2014-09-29 16:31 学亮 阅读(313) 评论(0) 推荐(0) 编辑
摘要:参考地址:http://www.cnblogs.com/zhili/p/ProxyPattern.html一、引言在软件开发过程中,有些对象有时候会由于网络或其他的障碍,以至于不能够或者不能直接访问到这些对象,如果直接访问对象给系统带来不必要的复杂性,这时候可以在客户端和目标对象之间增加一层中间层,... 阅读全文
posted @ 2014-09-28 16:26 学亮 阅读(218) 评论(0) 推荐(0) 编辑
摘要:转载地址:http://www.cnblogs.com/zhili/p/CompositePattern.html一、引言在软件开发过程中,我们经常会遇到处理简单对象和复合对象的情况,例如对操作系统中目录的处理就是这样的一个例子,因为目录可以包括单独的文件,也可以包括文件夹,文件夹又是由文件组成的,... 阅读全文
posted @ 2014-09-28 14:17 学亮 阅读(310) 评论(0) 推荐(0) 编辑
摘要:一、什么是模板方法模式Template Method模式也叫模板方法模式,是行为模式之一,它把具有特定步骤算法中的某些必要的处理委让给抽象方法,通过子类继承对抽象方法的不同实现改变整个算法的行为。二、模板方法模式的应用场景Template Method模式一般应用在具有以下条件的应用中:- 具有统一... 阅读全文
posted @ 2014-07-10 15:07 学亮 阅读(251) 评论(0) 推荐(0) 编辑
摘要:1.什么是外观模式为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用2.为什么要使用外观模式在软件开发系统中,客户程序经常会与复杂系统的内部子系统之间产生耦合,从而导致客户程序随着子系统的变化而变化,那么如何简化客户程序与子系统之间的交互接... 阅读全文
posted @ 2014-07-10 13:27 学亮 阅读(383) 评论(0) 推荐(0) 编辑
摘要:1.观察者模式又叫做发布-订阅模式。2.观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。3.使用观察者模式的好处:维护相关对象间的一致性。我们不希望为了维持一致性而使各类紧密耦合,这样会给维护、... 阅读全文
posted @ 2014-07-09 16:47 学亮 阅读(289) 评论(0) 推荐(0) 编辑
摘要:假如我们需要建造一个房子,并且我们也不知道如何去建造房子,所以就去找别人帮我们造房子第一步:新建一个房子类House,里面有房子该有的属性,我们去找房子建造者接口HouseBuilder,我们要建造一栋平房,就去找PingFangHouseBuilder,该类继承自HouseBuilder,里面有具... 阅读全文
posted @ 2014-01-23 20:20 学亮 阅读(1251) 评论(1) 推荐(1) 编辑
摘要:通过序列化的方式实现深拷贝 [Serializable] public class Person:ICloneable { public string Name { get; set; } public int Age { get; set; } ... 阅读全文
posted @ 2014-01-22 21:43 学亮 阅读(930) 评论(0) 推荐(2) 编辑
摘要:假如程序中有一个Person类,我的需求就是需要在整个应用程序中只能new一个Person,而且这个Person实例在应用程序中进行共享,那么我们该如何实现呢?第一步:新建一个Person类,类中我们将构造函数私有化,这样就不能再外部new一个了第二步:我们在公开一个Person属性实例或者获取Pe... 阅读全文
posted @ 2014-01-21 07:24 学亮 阅读(1139) 评论(2) 推荐(4) 编辑
摘要:假如我们的苹果和香蕉还分为北方的和南方的,那么苹果Apple和香蕉Banana就是抽象类了,所以采集的方法就应该抽象的第一步:我们会创建北方的苹果NorthApple类和SourthBanana类,这两个类继承Apple,北方的香蕉NorthBanana类和SourthBanana类,其中实现各自的... 阅读全文
posted @ 2014-01-20 21:25 学亮 阅读(895) 评论(1) 推荐(0) 编辑