设计模式
文章平均质量分 67
_Cassie
这个作者很懒,什么都没留下…
展开
-
工厂三姐妹——创建型设计模式之二
一、简单工厂 简单工厂是面向对象编程的起步设计模式,用到面向对象设计的三大特性:封装,继承,多态来进行设计是必须的。 封装:使业务逻辑和界面逻辑分离,做到代码复用,而不是复制。 继承:将在同一类中进行的逻辑操作,抽象出一个类或者接口,统一定义,通过子类进行不同的实现。这样对象之间的修改就变得独立,不会影响到其他类,降低了对象间的耦合。 多态:通过给同类Things定义接口或抽象类,由子类继原创 2012-12-26 21:33:03 · 1264 阅读 · 9 评论 -
状态模式——行为型设计模式之三
一、命令 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。 命令模式联系生活,结合面向对象思想,最起码应该有四个类,命令发出者,命令传递命令接收者,还有命令本身。 或许有的人会说,命令传递者有点多余,多余吗? 为什么要加命令传递者?命令传递者可不仅是用来传递命令哦! 先从生活中抽象出一个例子:饭店服务员就好是模原创 2013-01-17 10:39:39 · 1054 阅读 · 1 评论 -
模板设计——行为设计模式之一
一、模板方法 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 特点:模板方法时通过吧不变的行为搬移到超类,去除子类中的重复代码来体现它的优势。它提供了一个很好的代码复用平台。 适用范围:当不变的和可变的行为在方法的子类实现中混合在一起的时候,不变的行为就会在子类中重复出现。这时候就可以考虑用模板方法吧原创 2013-01-17 10:36:07 · 816 阅读 · 6 评论 -
命令模式——行为设计模式之二
一、命令 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。 命令模式联系生活,结合面向对象思想,最起码应该有四个类,命令发出者,命令传递命令接收者,还有命令本身。 或许有的人会说,命令传递者有点多余,多余吗? 为什么要加命令传递者?命令传递者可不仅是用来传递命令哦! 先从生活中抽象出一个例子:饭店服务员就好是模原创 2013-01-17 10:37:46 · 946 阅读 · 3 评论 -
职责模式——行为设计模式之四
一、职责链模式 使对个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系.将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。 客户端发出的请求时,并不知道哪一个对象最终处理这个请求,请求只是沿链传递,直至有一个对象负责处理它,且链中的对象自己也并不知道链的结构。这样系统的更改可以在不影响客户端的情况下动态的重新组织和分配责任,简化了对象的相互连接,他们原创 2013-01-17 10:42:27 · 978 阅读 · 4 评论 -
策略+简单工厂 实战篇
机房收费系统收费制度——策略+简单工厂模式 前段时间把设计模式学了个遍,确切的说是初识。因为看过后,脑袋里就只剩下这几个模式叫什么了,怎么用,类图是什么,都不记得了。 现在机房收费系统重构,刚好拿几个过来练练手。 一、策略模式的使用环境 机房收费系统在下机收费这块,涉及到两种卡的收费,一种是固定用户,一种是临时用户。不同的用户消费单价不相同,导致在读取数据库的时候会有两种不同的查询方法,这原创 2013-03-13 21:58:04 · 1547 阅读 · 9 评论 -
看观察者怎么全方位观察机房收费系统
一、观察者模式定义 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题。这个主题对象在状态发生变化时,会通知所有的观察者对象,使他们能够自动更新自己。 解析:为什么会有观察者模式? 这里需要注意几点: 1、一对多的依赖关系;并不是说一对一不可用,只是一对一用观察者模式,没有必要。 2、观察者接收到主题的通知后,自动更新状态:观察者本身都有自己更新自己的方法,需原创 2013-04-17 21:48:50 · 1372 阅读 · 9 评论 -
登陆也需要装饰——机房收费系统装饰模式实战
一、装饰模式概述 装饰模式的用途,顾名思义,现实生活中我们需要一些装饰品来装饰人,或者物。淡然没有这些装饰,物体和人依然是存在的,这就意味着装饰品并非必须的,我们有时需要一个(项链),或许有时需要二个(项链,耳钉),再或者需要更多(项链,耳钉,戒指……),用一句话概括:装饰模式就是动态地给一个对象添加一些额外的职责。 关于更多装饰模式理论:详见博客:装饰模式——结构型设计模式之四原创 2013-05-05 11:35:42 · 1792 阅读 · 18 评论 -
再回首,策略、简单工厂是否依然?
遵循开闭原则设计出的模块具有两个主要特点: (1)对于扩展是开放的(Open for extension)。这意味着模块的行为是可以扩展的。当应用的需求改变时,我们可以对模块进行扩展,使其具有满足那些改变的新行为。也就是说,我们可以增加模块的功能。 (2)对于修改是关闭的(Closed for modification)。对模块行为进行扩展时,不必改动模块的源代码或者二进制代码。模块的二进制可执行版本,无论是可链接的库、DLL或者.EXE文件,都无需改动。 注意:开闭原则原创 2014-10-27 21:28:23 · 1647 阅读 · 67 评论 -
再回首——行为型设计模式
行为型 设计模式被分成三大类,创建型,结构型,行为型。具体要阐述为什么这么分,这个问题,暂时解决不了,但是我们能做的是,可以掌握它,合理的运用它。对于行为型设计模式,记住:它侧重的是对“方法”的操作。 下面是对几个设计模式的理解。 一、模板方法 1、概述 将一个操作的算法的骨架和具体算法实现分离——解耦 骨架在父类原创 2014-10-28 20:52:19 · 1354 阅读 · 18 评论 -
观察者模式——行为型设计模式之五
一、观察者模式 这个模式还有另一个名字发布——订阅模式。我觉得这个模式跟适合点。 定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。 这个模式跟我们的博客委员会的职能很相像哦! 每个月我们都要对博客进行一次检查。当管理员要结果时,博客委员会组长就得把各自组的博客结果发给管理员。 看一原创 2013-01-09 21:35:41 · 711 阅读 · 2 评论 -
中介模式——行为模式之六
零、问题 面向对象强调的是尽量把系统分割成许多对象,这样通常可以增加其复用性。但是如果有一个系统中有大量的对象,且彼此都需要联系,这样由于对象比较多,所以联系就会激增,大量的连接时的一个对象不可能在没有其他对象的支持下工作,系统表现为一个不可分割的整体,所以对系统的行为进行任何较大的改动就会变得困难,同时,代码的复用性也降低了。这样该怎么办呢? 一、中介者模式 为了解决上述问题原创 2013-01-23 21:41:31 · 1108 阅读 · 4 评论 -
代理模式——结构型设计模式之六
一、代理模式 为其他对象提供一种代理以控制对这个对象的访问。 例子是这么说的: A同学追C 同学,可是A同学不敢直接送东西给C同学,于是就通过B同学把东西转交给C同学。B同学送给C同学的东西都是A同学的,也就是说B的所有动作A同学的本意,并非B的本意哦!最后,B同学和C同学在一起了,当然这是故事情节,不管他了。这里的B同学就是我们要说的代理模式的代理。 重点:我们知道B送给C的原创 2013-01-08 11:42:30 · 914 阅读 · 2 评论 -
初识面向对象设计模式
面向对象设计模式是一套反复使用,多数人知晓的,经过分类编目的,代码设计经验的总结。使用设计模式是为了可重用代码,让代码更容易被他人理解,保证代码可靠性。 1.创建型模式 创建型模式是对象的创建和对象的使用分开。因为对象的创建会消耗掉系统的很多资源,所以单独对对象的创建进行研究,从而能够高效地创建对象就是创建型模式要探讨的问题。这里有6个具体的创建型模式可供研究,它们分别是: 简单工厂模式(S转载 2012-12-31 19:56:00 · 749 阅读 · 1 评论 -
抽象工厂——创建型设计模式一
一、了解抽象工厂设计模式 书上说:提供一个创建一系列相关或相互依赖对象的接口,而无需制定他们具体的类。 二、看类图 解说员:图上分两部分来看,一部分是左边的IFactory家族,另一部分是右边的IProduct 家族。 1、先看IProduct家族。 第一层:客户需求。可以看出我们需要哪些产品,由客户端决定,我们需要提前设计好第二层的产品。 第二层:Prod原创 2012-12-25 10:17:59 · 1422 阅读 · 11 评论 -
原型模式——创建型设计模式四
一、原型模式 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 用实例来说话:我要发简历,自己写了一份模板,然后复制了N 份。如下: //模板:class Resume { Private string name; Public Resume (string name) { This.name=name; } } //客原创 2012-12-31 20:10:29 · 1031 阅读 · 8 评论 -
适配器 and 组合模式——结构性模式之一
适配器模式 一、适配器模式 讲一个类的接口装换成客户希望的另外一个接口适配器模式使得原本由于接口不兼容而不能一起工作的哪些类可以一起工作。 用于解决什么问题? 系统的数据和行为都正确,但接口不符时,我们应该考虑用适配器,目的是使控制范围之外的一个原有对象与某个接口匹配。适配器模式主要用于希望复用一些现存的类,但是接口又与复用环境要求不一致的情况下。 简单的说:我们需要的东西就原创 2013-01-02 21:17:50 · 1621 阅读 · 5 评论 -
建造者模式——创建型模式之三
一、建造者模式 将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 建造模式的出现 引子 借用书上的例子,那炒菜(西红柿鸡蛋)来说,我们需要的原材料有:鸡蛋,西红柿;基本调料:油,盐/糖,葱花。 每次我们都需要重复这样的操作,可悲的是,尽管调料,材料都很少,厨师还是会出现忘记加盐,或者葱花的情况。怎么办? 为了解决这个问题,我们来分析一下,这些东西都是做原创 2012-12-31 19:59:49 · 881 阅读 · 8 评论 -
桥接模式——结构性设计模式之二
一、桥接模式 将抽象部分与它的实现部分分离,使他们都可以独立的变化。 什么叫抽象与它的是实现分离呢? 其实这并不是说,让抽象类与其派生类分离,这样也没有意义;实现指的是抽象类和它的派生类用来实现自己的对象。 像手机品牌和手机软件的关系。我们可以按手机品牌来分类, 同时,还可以按照手机软件来给软件分类。 现在我们要是想增加三个手机品牌应该怎么办? 用第一幅图来说,我们需要原创 2013-01-05 21:29:43 · 1437 阅读 · 4 评论 -
组合模式——结构型设计模式之三
一、组合模式 将对象组合成树形结构以表示“部分——整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。 组合模式适用范围:树形结构的“部分——整体”的关系中。 二、类图 上图中:Component 表示的不是整体,整体也好,部分也罢,Component表示的是他们共有的操作,定义成接口,所以从Component 到Composit原创 2013-01-05 21:32:33 · 137 阅读 · 4 评论 -
装饰模式——结构型设计模式之四
一、装饰模式 动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。 装饰模式的出现 用例子说明:我们想要表达一个人,穿不同衣服,体现不同个性的一个程序。 首先定义一个人Person类;在定义一个抽象的衣服Clothes类,然后有各种衣服的子类。 在客户端通过实例化“人”,然后再实例化需要的“衣服”,分别调用show 方法。 这样也可以达到目的,但是我原创 2013-01-08 11:25:36 · 1469 阅读 · 3 评论 -
外观模式——结构型设计模式之五
一、外观模式 为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 为什么使用外观模式? 当股票一,二,三,国债一,二任一个发生变化时,都会直接影响到每一个客户。这样耦合度太高。 我们或一种方式来看: 当股票一,二,三,国债一,二任一个发生变化时,只会直接影响到基金,而客户不用关心这些股票和国债的变化,他原创 2013-01-08 11:30:03 · 970 阅读 · 3 评论 -
学习mvc这一路
从.NET开始的MVC的起步,一路磕磕绊绊,不断地挖坑,填坑,让后让自己越埋越深,中间总有一段时间会停下来,做其他的,下次再上手的时候,发现又不一样,其实是一件很有意思的事。简单说一下这些跟mvc有关的东西。 一、Mvc设计模式 Mvc是一种软件设计模式,代表了一种多层的应用程序实现方式,mvc模式将应用程序实现分为三个不同的基本部分。 模型:表示数据和原创 2015-03-31 20:01:29 · 991 阅读 · 11 评论