随笔分类 -  设计模式学习

模式不是用来套用的,是用来指导开发的
设计模式 -- 状态模式
摘要:1、什么是状态模式? 状态模式:当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了它的类。 对象的状态可能有很多种情况,在不同的状态下,对象会有不同的行为,或者对同一行为有不同的反应。在这种环境下,使用状态模式能替代我们编写的大量判断对象当前状态的if-else语句。这是符合“开闭原则”的。举个例子来说,我们用的电灯开关,通常电灯开着的时候,我们按下开关,电灯会关闭,而电灯关着的时候,按下开关,电灯会打开。对于同样是按下开关这个请求,电灯会做出不同的响应,原因是电灯的状态不同。2、如何实现状态模式? 状态模式状态模式主要解决的是当控制一个对象状态的条件表达式过于复杂时的情况。这 阅读全文

posted @ 2013-06-02 17:58 雨过晴空 阅读(435) 评论(0) 推荐(0)

设计模式 -- 组合模式
摘要:1、什么是组合模式?组合模式有时候也叫做“整体-部分”模式,它使得类似于树的分级结构中,对于分支和叶节点的处理保持一致,以优化处理递归和分级结构。树结构大家都不陌生,我们电脑里的“资源管理器”就是个典型的树,文件系统由目录和文件组成,每一个目录类似于一个容器,他可以用来装文件,还可以用来装目录。按照这种方式,计算机的文件系统就是以递归结构来组织的,如果你想描述类似于这样的数据结构,可以使用组合模式。 组合模式:将对象组合成树型结构,以表示“整体-部分”关系,组合模式使得客户对单一对象和整体对象的处理保持一致。2、组合模式中设计的角色: 2.1 Component:抽象组合类,定义了叶子节点和枝 阅读全文

posted @ 2013-06-02 11:28 雨过晴空 阅读(266) 评论(0) 推荐(0)

设计模式 -- 适配器模式
摘要:听见适配器这个字眼,应该不会陌生吧,生活中很常见也很容易听到这个东西---适配器。生活中适配器真的很多呢,比如说我们使用笔记本的电源适配器,中国提供的家庭;用电的电压是220v,而笔记本生产厂商如美国却不支持220V电压,所以要在中国使用美国产的笔记本电脑就必须要有电源适配器。就像是下图那个样子,你想使用一个已经存在的类,但是他的接口又不符合要求。1、什么是适配器模式? 适配器模式将一个类的接口抓换成客户希望的另一个接口。适配器让原本接口不兼容的类可以合作无间。适配器模式涉及三个重要角色: 目标:定义了客户端使用的与特定领域相关的接口。 被适配者:定义了已经存在的接口,这些接口需要被适配。 适 阅读全文

posted @ 2013-04-10 11:31 雨过晴空 阅读(221) 评论(0) 推荐(0)

设计模式 -- 命令模式
摘要:1、什么是command命令模式? command命令模式是“封装方法调用”的一个模式,通过封装方法调用,把运算块封装成形。那么调用此运算的对象就不必深究事情是如何进行的,只需要知道可以使用这个包装成型的方法来完成它就可以了。因为它把运算封装,而不关心具体对象和实现,因此命令模式在我们的系统中有很多应用,如队列请求,日志请求,撤消操作等等。 “封装方法调用”也可以这样理解,命令模式把“命令的请求者”和“命令的执行者”解耦。这样一来,当命令请求者在请求一个命令时不必关心执行此命令的是哪个对象,这个对象怎么执行这个命令这些细节问题。要实现这两者之间的解耦,必然的要多出一个“中间处理者”——命令,我 阅读全文

posted @ 2013-04-09 16:16 雨过晴空 阅读(242) 评论(0) 推荐(0)

设计模式 -- 单例模式(单线程)
摘要:单例模式算是设计模式里最简单的一个设计模式了,讨论学习它,我们不用研究设计原则。它就是一个简单的类结构,来看看吧。1、什么是单例模式? 单例模式确保一个类只有一个实例,并且提供一个全局的访问点。 也许你觉得一个类只能有一个实例简直就是浪费,可是有些情况,我们需要的就是只有一个实例的类,比如说线程池(threadpool),缓存(cache),对话框,处理偏好设置和注册表的对象,日志对象,充当打印机、显卡等设备的驱动器等。事实上,这些类对象只能有一个,如果实例化多个出来,就会导致许多问题产生,如:程序的行为异常,资源的使用过量,或者导致不一致的结果。2、单例模式如何实现? 我说了,单例模式是设计 阅读全文

posted @ 2013-04-06 20:41 雨过晴空 阅读(712) 评论(0) 推荐(0)

设计模式 -- 抽象工厂
摘要:还记得吧?我们已经学完了简单工厂和工厂方法了,今天把“抽象工厂”学习完,那么我们的工厂模式就算学完了。1、什么是“抽象工厂”? 抽象工厂模式提供一个接口,用语创建相关或依赖对象的家族,而不需要明确指定具体类。这个概念还真是不好理解,没事,我们接着以例子来说明。 还是关于Pizza饼的故事。Pizza的做法(面团+酱汁+芝士)都是相同的,唯一的差别是他们使用的原料。由于各地区Pizza风味不同,原料使用上自然会有差别,有的地区会在原料上偷工减料,这样就会败坏Pizza长年以来的好名声。为了确保各地区Pizza质量,我们决定要建造一个工厂来生产原料,这个工厂将负责创建原料家族中每一种原料,也就是说 阅读全文

posted @ 2013-04-06 16:13 雨过晴空 阅读(219) 评论(0) 推荐(0)

设计模式 -- 简单工厂
摘要:工厂模式分为:简单工厂,工厂方法,抽象工厂三种模式,严格来说简单工厂不算是一种模式,反而比较像是一种编程习惯,由于比较常用,有些开发人员也把简单工厂看成是工厂模式。首先,所有工厂模式都是用来封装对象的创建的,这样一来,我们的对象创建就能“隐蔽”(你看不见new的过程)的进行,同时这也使得对象之间的依赖关系大大降低,也就符合了我们“低耦合”的设计原则。今天我们来看一下“简单工厂”这个非常好的编程习惯。1、什么是“简单工厂”? 简单工厂说白了就是把创建对象的过程分离出来。比如说我们实现一个能够进行简单加减乘除的计算器,那么你肯动能想到要有一个计算类,这个计算类应该有两个操作数和一个操作符,然后有. 阅读全文

posted @ 2013-04-05 16:26 雨过晴空 阅读(213) 评论(0) 推荐(0)

设计模式 -- 装饰者模式
摘要:这个设计模式还是第一次使用,初次使用觉得特别设计特别别扭,还是要好好钻研一番,否则搞不好使用它会给你带来麻烦。1、什么是装饰者模式? 装饰者模式能够动态的将功能和职责添加到对象上。听起来觉得很不错呢,可是我们为什么要使用装饰者模式呢?用《Head First》的话说就是解决掉继承的滥用问题,前几个设计模式里我们都有提到“多用组合,少用继承”这个设计原则,这个模式里将继续讨论这个问题。通常我们想到扩展一个类的功能时,总是最先想到“继承”,继承有时候很好用,但是当设计很复杂的类关系时,继承的“黑暗面”会远远大于它的带来的便利。举个例子说奥迪汽车是个基类,这个类有很多它的子类,比如说,A1,A4,A 阅读全文

posted @ 2013-03-30 10:58 雨过晴空 阅读(363) 评论(0) 推荐(0)

设计模式--观察者模式
摘要:今日看了《Head First》一书中关于“观察者”模式的讲解,突然间了解到自己对“观察者”的了解很是肤浅。今天采取与策略模式相同的方法来学习观察者模式。1、什么是观察者模式?观察者模式又叫做“发布-订阅”模式,它定义了对象之间的一对多依赖关系,这样当一个对象的状态改变时,他的所有依赖者都会收到通知并自动更新。这种情景在我们的生活中很常见,比如订阅报纸,关注某人的微博等,你订阅了(或者关注了)什么报纸(什么人),在这个报纸到达报社(这个人发了微博有了更新)时都会给你送到(都会通知你)。这里所谓的“一”就是被观察者,我们习惯称它为“主题”(Subject),而“多”就是关心主题变化的一些“观察者 阅读全文

posted @ 2013-03-27 20:52 雨过晴空 阅读(243) 评论(0) 推荐(0)

设计模式---策略模式
摘要:今日在学习设计模式,深深地认识了自己的不足之处啊!!也认识到了一句话:“单纯为实现功能的代码不是好代码!”。我们必须要考虑到软件行业“多变”这个老魔头,时刻保持代码的可扩展性。为了丰富自己的羽翼,也为了能够和更多的人一起学习交流,写点东西吧!策略模式1、什么是策略模式? 策略模式定义了算法族,分别封装起来。让他们之间可以相互替换,此模式让算法的变化独立于使用算法的客户。2、策略模式设计原则? 2.1 封装“变化”,使易于变化的部分独立于不变的部分,以便修改“变化”时,其他部分不受影响。 2.2针对“接口”编程而非针对实现编程。针对“接口”编程就是针对“超类型”编程,这个“超类型”可以是“接口. 阅读全文

posted @ 2013-03-26 15:12 雨过晴空 阅读(276) 评论(0) 推荐(0)

导航