文章分类 -  设计模式

摘要:单例模式 意图 保证一个类仅有一个实例,并提供一个访问它的全局访问点。 适用性 当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时。 当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时。 一、引言 最近在设计模式的一些内容,主要的参考书籍是《Head 阅读全文
posted @ 2020-02-26 14:41 Net-Spider 阅读(577) 评论(0) 推荐(0) 编辑
摘要:一、观察者模式 目的 概述 原理 二、 C#中的观察者模式 概述 模型与观察者基类 优点 三、 事例 题目:猫大叫,两只老鼠开始逃跑,主人醒来,宝宝也醒来了并且哭了起来 解决方案: 1. 建立模型(目标基类) 2. 建立观察者基类(单行为,多行为) 3. 建立具体目标 4. 建立具体观察者 5. 运 阅读全文
posted @ 2017-08-10 16:07 Net-Spider 阅读(209) 评论(0) 推荐(0) 编辑
摘要:总体来说设计模式分为三大类:结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。其实还有两类:并发型模式和线程池模式。用一个图片来整体描述一下:1、开闭原则(Open Close Principle)2、里氏代换原则(Liskov Substitution ... 阅读全文
posted @ 2014-12-03 15:44 Net-Spider 阅读(266) 评论(0) 推荐(0) 编辑
摘要:现在电子账单越来越流行了,比如你的信用卡,到月初的时候银行就会发一份电子邮件到你邮箱中,说你这个月消费了多少,什么时候消费的,积分是多少等 等,这是每个月发一次,还有一种也是银行发的邮件你肯定非常有印象:广告信,现在各大银行的信用卡部门都在拉拢客户,电子邮件是一种廉价、快捷的通讯方 式,你用纸质的广... 阅读全文
posted @ 2014-12-03 15:07 Net-Spider 阅读(130) 评论(0) 推荐(0) 编辑
摘要:原型模式的定义 原型模式(Prototype Pattern)的简单程度是仅次于单例模式和迭代器模式,正是由于简单,使用的场景才非常的多,其定义如下: Specify the kinds of objects to create using a prototypical instance, an... 阅读全文
posted @ 2014-12-03 15:03 Net-Spider 阅读(151) 评论(0) 推荐(0) 编辑
摘要:11.1 变化是永恒的 又是一个周三,快要下班了,老大突然拉住我,喜滋滋地告诉我:“牛叉公司很满意我们做的模型,又签订了一个合同,把奔驰、宝马的车辆模型都交给我们公司制 作了,不过这次又额外增加了一个新需求:汽车的启动、停止、喇叭声音、引擎声音都由客户自己控制,他想什么顺序就什么顺序,这个没问题吧?... 阅读全文
posted @ 2014-12-03 14:57 Net-Spider 阅读(137) 评论(0) 推荐(0) 编辑
摘要:9.1 女娲的失误 我们在上一章节讲了女娲造人的故事。人是造出来了,世界也热闹了,可是低头一看,都是清一色的类型,缺少关爱、仇恨、喜怒哀乐等情绪,人类的生命太平淡 了,女娲一想,猛然一拍脑袋,哇K!忘记给人类定义性别了,那怎么办?抹掉重来,于是人类经过一次大洗礼,所有的人种都消灭掉了,世界又是空无一... 阅读全文
posted @ 2014-12-03 14:53 Net-Spider 阅读(127) 评论(0) 推荐(0) 编辑
摘要:8.1 女娲造人的故事 东汉《风俗通》记录了一则神话故事:“开天辟辟,未有人民,女娲搏,黄土作人……”,讲述的内容就是大家非常熟悉的女娲造人的故事。开天辟地之初,大地上 并没有生物,只有苍茫大地,纯粹而洁净的自然环境,寂静而又寂寞,于是女娲决定创造一个新物种(即人类)来增加世界的繁荣,怎么制造呢? ... 阅读全文
posted @ 2014-12-03 14:49 Net-Spider 阅读(141) 评论(0) 推荐(0) 编辑
摘要:7.1 我是皇帝我独苗 自从秦始皇确立了皇帝这个位置以后,同 一时期基本上就只有一个人孤零零的坐这个位置。这种情况下臣民们也好处理,大家叩拜、谈论的时候只要提及皇帝,每个人都知道指的是谁,而不用在皇帝前前面 加上特定的称呼,如张皇帝,李皇帝。这一个过程反应到设计领域就是,要求一个类只能生成一个对象... 阅读全文
posted @ 2014-12-03 14:45 Net-Spider 阅读(123) 评论(0) 推荐(0) 编辑
摘要:概述在 软件构建过程中,我们需要为某些对象建立一种“通知依赖关系” ——一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知。如果这样的依赖关系过于紧密,将使软件不能很好地抵御变化。使用面 向对象技术,可以将这种依赖关系弱化,并形成一种稳定的依赖关系。从而实现软件体系结构的松... 阅读全文
posted @ 2014-08-29 17:48 Net-Spider 阅读(149) 评论(0) 推荐(0) 编辑
摘要:概述在 面向对象的软件设计中,我们经常会遇到一类集合对象,这类集合对象的内部结构可能有着各种各样的实现,但是归结起来,无非有两点是需要我们去关心的:一是 集合内部的数据存储结构,二是遍历集合内部的数据。面向对象设计原则中有一条是类的单一职责原则,所以我们要尽可能的去分解这些职责,用不同的类去承担不 ... 阅读全文
posted @ 2014-08-29 17:33 Net-Spider 阅读(130) 评论(0) 推荐(0) 编辑
摘要:概述在软件系统中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”。但在某些场合,比如要对行为进行“记录、撤销/重做、事务”等处理,这种无法抵御变化的紧耦合是不合适的。在这种情况下,如何将“行为请求者”与“行为实现者”解耦?将一组行为抽象为对象,可以实现二者之间的松耦合[李建忠]。这就是本文要说... 阅读全文
posted @ 2014-08-29 17:22 Net-Spider 阅读(150) 评论(0) 推荐(0) 编辑
摘要:摘要:Template Method模式是比较简单的设计模式之一,但它却是代码复用的一项基本的技术,在类库中尤其重要。主要内容1.概述2.Template Method解说3..NET中的Template Method模式4.适用性及实现要点概述变化一直以来都是软件设计的永恒话题,在XP编程中提倡拥... 阅读全文
posted @ 2014-08-29 17:08 Net-Spider 阅读(109) 评论(0) 推荐(0) 编辑
摘要:摘 要:结构型模式,顾名思义讨论的是类和对象的结构,它采用继承机制来组合接口或实现(类结构型模式),或者通过组合一些对象,从而实现新的功能(对象结构 型模式)。这些结构型模式,它们在某些方面具有很大的相似性,仔细推敲,侧重点却各有不同。本文试图对这几种结构型模式做一个简单的小结。主要内容1.结构型模... 阅读全文
posted @ 2014-08-29 16:54 Net-Spider 阅读(119) 评论(0) 推荐(0) 编辑
摘要:摘要:在软件系统中,有些对象有时候由于跨越网络或者其他的障碍,而不能够或者不想直接访问另一个对象,如果直接访问会给系统带来不必要的复杂性,这时候可以在客户程序和目标对象之间增加一层中间层,让代理对象来代替目标对象打点一切。这就是本文要说的Proxy模式。主要内容1.例说Proxy模式2.Proxy模... 阅读全文
posted @ 2014-08-29 16:33 Net-Spider 阅读(138) 评论(0) 推荐(0) 编辑
摘要:摘要:面向对象的思想很好地解决了抽象性的问题,一般也不会出现性能上的问题。但是在某些情况下,对象的数量可能会太多,从而导致了运行时的代价。那么我们如何去避免大量细粒度的对象,同时又不影响客户程序使用面向对象的方式进行操作?本文试图通过一个简单的字符处理的例子,运用重构的手段,一步步带你走进Flywe... 阅读全文
posted @ 2014-08-29 16:26 Net-Spider 阅读(142) 评论(0) 推荐(1) 编辑
摘要:概述在软件开发系统中,客户程序经常会与复杂系统的内部子系统之间产生耦合,而导致客户程序随着子系统的变化而变化。那么如何简化客户程序与子系统之间的交互接口?如何将复杂系统的内部子系统与客户程序之间的依赖解耦?这就是要说的Façade 模式。意图为子系统中的一组接口提供一个一致的界面,Facade模式定... 阅读全文
posted @ 2014-08-29 16:15 Net-Spider 阅读(162) 评论(0) 推荐(0) 编辑
摘要:概述组合模式有时候又叫做部分-整体模式,它使我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以向处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦。意图将对象组合成树形结构以表示“部分-整体”的层次结构。Composite模式使得用户对单个对象和组合对象的使用具... 阅读全文
posted @ 2014-08-29 15:59 Net-Spider 阅读(138) 评论(0) 推荐(0) 编辑
摘要:概述在 软件系统中,有时候我们会使用继承来扩展对象的功能,但是由于继承为类型引入的静态特质,使得这种扩展方式缺乏灵活性;并且随着子类的增多(扩展功能的增 多),各种子类的组合(扩展功能的组合)会导致更多子类的膨胀。如何使“对象功能的扩展”能够根据需要来动态地实现?同时避免“扩展功能的增多”带来的子 ... 阅读全文
posted @ 2014-08-29 15:47 Net-Spider 阅读(157) 评论(0) 推荐(0) 编辑
摘要:概述在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?如何利用面向对象的技术来使得该类型能够轻松的沿着多个方向进行变化,而又不引入额外的复杂度?这就要使用Bridge模式。意图将抽象部分与实现部分分离,使它们都可以独立的变化。[GOF 《设计模式》]... 阅读全文
posted @ 2014-08-29 15:31 Net-Spider 阅读(304) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示