------大话设计模式
文章平均质量分 84
我能在河边钓一整天的鱼
欢迎来到我的酒馆
展开
-
简单工厂模式(Static Factory Method)
简介简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。书中实例要求用任意一种面向对象语言实现一个计算机控制台程序,要求输入两个数和运算符号,得到结果。(计算器)简单工厂模式...原创 2018-05-26 14:53:30 · 587 阅读 · 19 评论 -
工厂方法模式(Factory Method)
简介工厂方法模式是一种常用的对象创建型设计模式,此模式的核心是封装类中不变的部分,提取其中个性化善变的部分为独立类,通过依赖注入以达到解耦、复用和方便后期维护拓展的目的。书中实例小菜和大鸟聊起他们班同学学雷锋的事迹,而万能的大鸟在附和了几句后,终于把“雷锋”拉进了设计模式,小菜使用简单工厂模式把“雷锋代码”写了出来,雷锋可以扫地,买米......,功能是实现了,可问题是学生当雷锋,肯定有毕业的一天...原创 2018-05-31 15:08:09 · 269 阅读 · 6 评论 -
原型模式(Prototype)
简介用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。原型模式是一种创建型设计模式,它允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,工作原理是通过将一个原型对象传给那个要发动创建的对象,这个要发动的对象通过请求原型对象拷贝它们自己来实施创建。书中实例现实很残酷,都第9章了,小菜还没找到工作呢。在家准备简历的他,又被大鸟强行拉入到设计模式的学习中来.........原创 2018-05-31 20:06:28 · 251 阅读 · 8 评论 -
模版方法模式(TemplateMethod)
简介所谓模版方法模式,即定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模版方法使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。书中实例对于小菜来说,最可惜的事莫过于答题时解出了答案,但题却抄错了。对于大家来说,最搞笑的事莫过于亲眼目睹了他的逗鱼时刻。其实有一种方法不用抄题,那就是模版方法模式模版方法模式实现程序 //试题类 class TestPaper ...原创 2018-05-31 21:05:20 · 263 阅读 · 12 评论 -
外观模式(Facade)
简介外观模式,亦称“过程模式”。这种模式为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用 书中实例小菜最近炒股赔了钱,感叹着如果有人帮忙就好了。大鸟应声道:“基金就是一个好选择呀”。从面相对象的角度看,投资者对股票的联系太多,反而不利于操作,耦合性过高;而基金在投资中的作用恰好体现出了外观模式的优点...... 外观模式实...原创 2018-06-01 11:44:10 · 276 阅读 · 11 评论 -
职责链模式(Chain of Responsibility)
简介职责链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。在职责链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分...原创 2018-06-08 11:18:46 · 180 阅读 · 3 评论 -
中介者模式(Mediator)
简介中介者模式,用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变他们之间的交互。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。中介者模式属于行为型模式。书中实例大鸟你最近看新闻了吗?伊拉克和美国之间又剑拔弩张了,要是世界和平多好啊!大鸟说道:“没错,如果每个国家之间都是联系解决问题,很多争端其实是...原创 2018-06-08 12:14:33 · 411 阅读 · 5 评论 -
享元模式(FlyWeight)
简介享元模式,运用共享技术有效地支持大量细粒度的对象。享元模式主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式。书中实例小菜最近接了几个小型外包项目,主要是给一些私营业主做网站。事实上很多客户都需要这样的网站,但要求不太一样,有的人希望是新闻发布形式,有人希望是博客形式。可是每个网站租用一个空间,费用上很难...原创 2018-06-08 15:07:11 · 250 阅读 · 5 评论 -
解释器模式(interpreter)
简介解释器模式,给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。解释器模式提供了评估语言的语法或表达式的方式,它属于行为型模式。这种模式实现了一个表达式接口,该接口解释一个特定的上下文。这种模式被用在 SQL 解析、符号处理引擎等。书中实例今天小菜被老板交出外面,没想到老板好好的夸奖了小菜一番,小菜以此和大鸟炫耀,大鸟说你还年轻,老板的意思是最近可能...原创 2018-06-08 17:02:55 · 282 阅读 · 6 评论 -
访问者模式(Visitor)
简介访问者模式,表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。这种类型的设计模式属于行为型模式。根据模式,元素对象已接受访问者对象,这样访问者对象就可以处理元素对象上的操作。书中实例今天我们来讲最后一个设计模式,访问者模式。大鸟说,把你刚才念的那段话用控制台应用程序写下来,我们来看看这个模式是怎么用的。访问者模式实现程序 //人类...原创 2018-06-08 18:36:10 · 275 阅读 · 7 评论 -
建造者模式(Builder)
简介建造者模式又叫生成器模式,它可以将一个产品的内部表象与产品的生成过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。如果我们用了建造者模式,那么用户就只需指定需要建造的类型就可以得到它们,而具体建造的过程和细节就不需要知道了。书中实例小菜和大鸟在楼下吃饭,大鸟点的炒饭没放盐,难得大鸟也难受了一回。两人便感慨,好比程序设计需要实现一个小人,如果忘记写胳膊或腿儿的代码,其结果岂不...原创 2018-06-02 08:57:25 · 243 阅读 · 9 评论 -
观察者模式(Observer)
简介观察者模式,有时又被称为发布-订阅(Publish/Subscribe)模式,是软件设计模式的一种。观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,这个主题对象在状态发生变化时,会通知所有观察者对象,使他们能够自动更新自己。书中实例小菜所在的公司今天发生了件有趣的事儿。同事们趁老板不在,看股票的看股票,看NBA的看NBA。在平时,同事们和前台秘书之间随时保持着联...原创 2018-06-02 16:03:59 · 221 阅读 · 10 评论 -
代理模式(Proxy)
简介代理模式为其他对象提供了一种代理,以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。书中实例有一种帮忙叫做帮追女友,让人帮助追女友小心“代理上位”,千万不要给别人做嫁衣呦......代码组成类图关系介绍代理角色(Proxy)和真实角色(RealSubject)继承于抽象角色(subject),是其子类。代理角色和真...原创 2018-05-31 11:40:14 · 304 阅读 · 6 评论 -
命令模式(Command)
简介命令模式,将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。在软件系统中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”。但在某些场合,比如要对行为进行“记录、撤销/重做、事务”等处理,这种无法抵御变化的紧耦合是不合适的。在这种情况下,将一组行为抽象为对象,实现二者之间的松耦合。这就是命令模式。书中实例难得大鸟要带小菜去吃羊...原创 2018-06-06 15:06:52 · 254 阅读 · 4 评论 -
抽象工厂模式(Abstract Factory)
简介抽象工厂模式是所有形态的工厂模式中最为抽象和最具一般性的一种形态。抽象工厂模式是指当有多个抽象角色时,使用的一种工厂模式。它提供了一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。书中实例最近,小菜的项目需要更换数据库,原来用SQL Server,现在只能用Access。庞大的任务量致使小菜又懵逼了。如何能让更换数据库这件事灵活且简单呢?大鸟给他支了一招——抽象工厂模式。举例来说...原创 2018-06-02 20:00:56 · 279 阅读 · 3 评论 -
策略模式(Strategy)
简介策略模式是指对一系列的算法定义,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。书中实例大鸟给小菜上的第二堂课,要求小菜做一道商场收银软件的作业题,营业员根据客户所购买商品的单价和数量向客户收费。小菜原本得心应手,但当客户不断提出打折,积分,满多少减多少的要求时,小菜懵逼了。在大鸟的提示下,小菜运用了简单工厂模式解决了各种优惠折扣的问题,但是简单工...原创 2018-05-26 20:23:33 · 439 阅读 · 82 评论 -
面向对象的基本原则汇总
前言在《大话设计模式》一书中,程杰为我们介绍了面向对象的四个基本原则以及一个迪米特法则。小编通过百度后得知,原来面向对象有5个基本原则,遂写此篇整理总结。欢迎各位看官随小编的步伐来认识下这5大原则。正文---------------------------------------------------------------------------------------------------...原创 2018-05-26 21:14:52 · 260 阅读 · 22 评论 -
状态模式(State)
简介状态模式,即当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。状态模式主要解决的是当控制一个对象状态的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类中,可以把复杂的判断逻辑简化。书中实例加班对于一个程序工程师来说是很常见的事情。最近小菜他们公司经常加班到晚上9点以后。苦逼的小菜向大鸟诉说着强行加班的不合理性。“我的状态也是随着时间变化而变化的,晚...原创 2018-06-03 13:35:06 · 192 阅读 · 5 评论 -
适配器模式-对象适配器(Adapter)
简介适配器模式,将一个类的接口转换成客户希望的另外一个接口。对象适配器模式——在这种适配器模式中,适配器容纳一个它包裹的类的实例。在这种情况下,适配器调用被包裹对象的物理实体。书中实例小菜难得能和大鸟一起看NBA直播,球赛完了,小菜还陶醉在火箭队今年能怎样怎样,大鸟却又开始出题了。姚明是美国NBA的华人,假设他刚到球队,不会说英语,队员们也不可能为了姚明学中文,这时怎么办呢?弄一个翻译,给姚明翻译...原创 2018-06-03 15:41:32 · 681 阅读 · 5 评论 -
备忘录模式(Memento)
简介备忘录模式,它是在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原先保存的状态。备忘录模式的作用是当角色的状态改变时,有可能这个状态无效,这时候就可以使用暂时储存起来的备忘录将状态复原。书中实例小菜想着,玩游戏打Boss之前还是得保存进度啊,不然挂了就费了。大鸟说:"那好吧,咱们今天就讲备忘录模式,就用保存游戏进度的例子来讲。"小菜说:"...原创 2018-06-03 21:29:27 · 229 阅读 · 5 评论 -
组合模式(Composite)
简介组合模式:将对象组合成树形结构以表示‘部分-整体’的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。组合模式可以让客户端像修改配置文件一样简单的完成本来需要流程控制语句来完成的功能。书中实例今天小菜在开发中可遇到大难题了。用户需求是这样:开发一套办公管理系统。公司有总部和分部,总部下属的各个部门,分部同样也具有。如果在设计系统组织结构时,采取平行管理会非常麻烦,因为实际开发中需...原创 2018-06-04 12:11:04 · 270 阅读 · 4 评论 -
迭代器模式(Iterator)
简介迭代器模式提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。总地来说,迭代器模式就是分离了集合对象的遍历行为,抽象出一个迭代器类来负责,这样就可以做到不暴露集合的内部结构,又可让外部代码透明地访问集合内部的数据。书中实例小菜和大鸟在公交车上,只见售票员一个也不放过地向老外,公交公司员工,超重行李,包括小偷收票钱。大鸟说道:"这种遍历所有成员,也是一个设计模式——迭代器模式...原创 2018-06-04 14:13:52 · 252 阅读 · 5 评论 -
装饰模式(Decorator)
简介装饰模式指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。书中实例小菜准备去和MM约会,正好碰见在家的大鸟,小菜本来想让大鸟给他出出主意,没想到被大鸟逮个正着。今天还没学设计模式呢,正好借着穿衣搭配,我们来学装饰模式……装饰模式实现程序 //Person类(ConcreteCompontent) class...原创 2018-05-28 14:56:06 · 226 阅读 · 20 评论 -
单例模式(Singleton)
简介单例模式,保证一个类仅有一个实例,并提供一个访问它的全局访问点。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的类一个类只有一个实例。即一个类只有一个对象实例。书中实例又到了小菜求教的时间了,今天小菜遇到的依然是个很有意义问题。小菜用windows应用程序写了一个MDI窗体,当中有一个是工具箱的窗体,问题是,每次点击菜单,实例化工具箱,它就会出来一个,这样...原创 2018-06-06 09:54:39 · 337 阅读 · 4 评论 -
桥接模式(Bridge)
简介桥接模式,将抽象部分与它的实现部分分离,使他们都可以独立地变化。桥接模式基于类的最小设计原则,通过使用封装、聚合及继承等行为让不同的类承担不同的职责。书中实例时间过的可真快,想想几年前手机游戏还不是Android和Ios两种下载方式呢,只有同一厂家的手机才能玩同一款游戏,小菜和大鸟就赶在了这个时候。小菜想玩大鸟手机里的游戏,结果小菜就又学新模式了——桥接模式。桥接模式实现程序组成类图关系介绍实...原创 2018-06-06 10:43:12 · 309 阅读 · 2 评论 -
设计模式必备知识——UML类图关系总结
前言————————————————————————————————————————————————————在《大话设计模式》一书中,每一种设计模式都有它的组成类图,类图属于UML范畴,学好设计模式UML也同等重要,接下来让小编带领大家一起来回顾下UML类图中的各种关系吧正文————————————————————————————————————————————————————我们用书中的一幅图片...原创 2018-06-09 15:01:21 · 557 阅读 · 6 评论