![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 93
YZF_Kevin
若有恒,何必三更眠五更起;最无益,莫过一日曝十日寒
展开
-
访问者模式
访问者模式是一种较为复杂的行为型设计模式,它包含访问者和被访问元素两个主要组成部分,这些被访问的元素通常具有不同的类型,且不同的访问者可以对它们进行不同的访问操作。例如处方单中的各种药品信息就是被访问的元素,而划价人员和药房工作人员就是访问者。访问者模式使得用户可以在不修改现有系统的情况下扩展系统的功能,为这些不同类型的元素增加新的操作。在使用访问者模式时,被访问元素通常不是单独存在的,它们存储在一个集合中,这个集合被称为“对象结构”,访问者通过遍历对象结构实现对其中存储的元素的逐个操作。转载 2022-09-05 17:49:45 · 311 阅读 · 0 评论 -
自定义语言的实现——解释器模式
本文转载自 :http://blog.csdn.net/lovelion/article/details/7713567有朋友一直在等待我的解释器模式文稿,,现把某个版本发在博客上,欢迎大家讨论! 虽然目前计算机编程语言有好几百种,但有时候我们还是希望能用一些简单的语言来实现一些特定的操作,我们只要向计算机输入一个句子或文件,它就能够按照预先定义的文法规则来转载 2016-01-03 20:59:38 · 662 阅读 · 0 评论 -
复杂对象的组装与创建——建造者模式
本文转载自 :http://blog.csdn.net/lovelion/article/details/7426015没有人买车会只买一个轮胎或者方向盘,大家买的都是一辆包含轮胎、方向盘和发动机等多个部件的完整汽车。如何将这些部件组装成一辆完整的汽车并返回给用户,这是建造者模式需要解决的问题。建造者模式又称为生成器模式,它是一种较为复杂、使用频率也相对较低的创建型模式。建造者转载 2016-01-04 22:01:51 · 576 阅读 · 0 评论 -
扩展系统功能——装饰模式
本文转载自 :http://blog.csdn.net/lovelion/article/details/7424685尽管目前房价依旧很高,但还是阻止不了大家对新房的渴望和买房的热情。如果大家买的是毛坯房,无疑还有一项艰巨的任务要面对,那就是装修。对新房进行装修并没有改变房屋用于居住的本质,但它可以让房子变得更漂亮、更温馨、更实用、更能满足居家的需求。在软件设计中,我们也有一转载 2016-01-04 22:04:54 · 619 阅读 · 0 评论 -
对象的克隆——原型模式
本文转载自 :http://blog.csdn.net/lovelion/article/details/7424559张纪中版《西游记》以出乎意料的造型和雷人的台词遭到广大观众朋友的热议,我们在此对该话题不作过多讨论。但无论是哪个版本的《西游记》,孙悟空都是其中的一号雄性主角,关于他(或它)拔毛变小猴的故事几乎人人皆知,孙悟空可以用猴毛根据自己的形象,复制(又称“克隆”或“拷转载 2016-01-04 22:07:59 · 460 阅读 · 0 评论 -
请求的链式处理——职责链模式
本文转载自 :http://blog.csdn.net/lovelion/article/details/7420891“一对二”,“过”,“过”……这声音熟悉吗?你会想到什么?对!纸牌。在类似“斗地主”这样的纸牌游戏中,某人出牌给他的下家,下家看看手中的牌,如果要不起上家的牌则将出牌请求再转发给他的下家,其下家再进行判断。一个循环下来,如果其他人都要不起该牌,则最初的出牌者可转载 2016-01-04 22:21:17 · 533 阅读 · 0 评论 -
确保对象的唯一性——单例模式
本文转载自 :http://blog.csdn.net/lovelion/article/details/74208833.1 单例模式的动机 对于一个软件系统的某些类而言,我们无须创建多个实例。举个大家都熟知的例子——Windows任务管理器,如图3-1所示,我们可以做一个这样的尝试,在Windows的“任务栏”的右键弹出菜单上多次点击“启动任务管理器”,看转载 2016-01-04 22:26:40 · 448 阅读 · 0 评论 -
模板方法模式
本文转载自 :http://blog.csdn.net/lovelion/article/details/82997941. 模板方法模式概述 在现实生活中,很多事情都包含几个实现步骤,例如请客吃饭,无论吃什么,一般都包含点单、吃东西、买单等几个步骤,通常情况下这几个步骤的次序是:点单 --> 吃东西 --> 买单。在这三个步骤中,点单和买单大同小异,最大的转载 2016-01-04 22:35:08 · 760 阅读 · 0 评论 -
单一职责原则
本文转载自 :http://blog.csdn.net/lovelion/article/details/7536542单一职责原则是最简单的面向对象设计原则,它用于控制类的粒度大小。单一职责原则定义如下:单一职责原则(Single Responsibility Principle, SRP):一个类只负责一个功能领域中的相应职责,或者可以定义为:就一个转载 2016-01-09 18:24:01 · 364 阅读 · 0 评论 -
开放封闭原则
开闭原则是面向对象的可复用设计的第一块基石,它是最重要的面向对象设计原则。开闭原则由Bertrand Meyer于1988年提出,其定义如下:开闭原则(Open-Closed Principle, OCP):一个软件实体应当对扩展开放转载 2016-01-09 18:24:54 · 436 阅读 · 0 评论 -
里氏代换原则
本文转载自 :http://blog.csdn.net/lovelion/article/details/7540445里氏代换原则由2008年图灵奖得主、美国第一位计算机科学女博士Barbara Liskov教授和卡内基·梅隆大学Jeannette Wing教授于1994年提出。其严格表述如下:如果对每一个类型为S的对象o1,都有类型为T的对象o2,使得以T定义的所有程序转载 2016-01-09 18:25:27 · 428 阅读 · 0 评论 -
依赖倒转原则
如果说开闭原则是面向对象设计的目标的话,那么依赖倒转原则就是面向对象设计的主要实现机制之一,它是系统抽象化的具体实现。依赖倒转原则是Robert C. Martin在1996年为“C++Reporter”所写的专栏Engineering Notebook的转载 2016-01-09 18:26:00 · 456 阅读 · 0 评论 -
接口隔离原则
接口隔离原则定义如下:接口隔离原则(Interface Segregation Principle, ISP):使用多个专门的接口,而不使用单一的总接口,即客户端不应该依赖那些它不需要的接口。 根据接转载 2016-01-09 18:26:41 · 378 阅读 · 0 评论 -
合成复用原则
本文转载自 :http://blog.csdn.net/lovelion/article/details/7563441合成复用原则又称为组合/聚合复用原则(Composition/Aggregate Reuse Principle, CARP),其定义如下:合成复用原则(Composite Reuse Principle, CRP):尽量使用对象组合,转载 2016-01-09 18:27:23 · 761 阅读 · 0 评论 -
迪米特法则
本文转载自 :http://blog.csdn.net/lovelion/article/details/7563445迪米特法则来自于1987年美国东北大学(Northeastern University)一个名为“Demeter”的研究项目。迪米特法则又称为最少知识原则(LeastKnowledge Principle, LKP),其定义如下:迪转载 2016-01-09 18:28:08 · 682 阅读 · 0 评论 -
实现对象的复用——享元模式
本文转载自 :http://blog.csdn.net/lovelion/article/details/7667781当前咱们国家正在大力倡导构建和谐社会,其中一个很重要的组成部分就是建设资源节约型社会,“浪费可耻,节俭光荣”。在软件系统中,有时候也会存在资源浪费的情况,例如在计算机内存中存储了多个完全相同或者非常相似的对象,如果这些对象的数量太多将导致系统运行代价过高,内存转载 2016-01-03 21:03:57 · 388 阅读 · 0 评论 -
备忘录模式
本文转载自 :http://blog.csdn.net/lovelion/article/details/7526740每个人都有过后悔的时候,但人生并无后悔药,有些错误一旦发生就无法再挽回,有些人一旦错过就不会再回来,有些话一旦说出口就不可能再收回,这就是人生。为了不后悔,凡事我们都需要三思而后行。说了这么多,大家可能已经晕了,不是在学设计模式吗?为什么弄出这么一堆人生感悟来转载 2016-01-03 21:07:51 · 494 阅读 · 0 评论 -
处理多维度变化——桥接模式
本文转载自 :http://blog.csdn.net/lovelion/article/details/7464183在正式介绍桥接模式之前,我先跟大家谈谈两种常见文具的区别,它们是毛笔和蜡笔。假如我们需要大中小3种型号的画笔,能够绘制12种不同的颜色,如果使用蜡笔,需要准备3×12 = 36支,但如果使用毛笔的话,只需要提供3种型号的毛笔,外加12个颜料盒即可,涉及到的转载 2016-01-03 18:40:16 · 1600 阅读 · 0 评论 -
不兼容结构的协调——适配器模式
本文转载自 :http://blog.csdn.net/lovelion/article/details/8624325我的笔记本电脑的工作电压是20V,而我国的家庭用电是220V,如何让20V的笔记本电脑能够在220V的电压下工作?答案是引入一个电源适配器(AC Adapter),俗称充电器或变压器,有了这个电源适配器,生活用电和笔记本电脑即可兼容,如图9-1所示:转载 2016-01-03 18:44:41 · 430 阅读 · 0 评论 -
处理对象的多种状态及其相互转换——状态模式
“人有悲欢离合,月有阴晴圆缺”,包括人在内,很多事物都具有多种状态,而且在不同状态下会具有不同的行为,这些状态在特定条件下还将发生相互转换。就像水,它可以凝固成冰,也可以受热蒸发后变成水蒸汽,水可以流动,冰可以雕刻,蒸汽可以扩散。我们可以用UML状态图来描述H转载 2016-01-03 19:56:27 · 2132 阅读 · 0 评论 -
工厂三兄弟之简单工厂模式
本文转载自 :http://blog.csdn.net/lovelion/article/details/9300337工厂模式是最常用的一类创建型设计模式,通常我们所说的工厂模式是指工厂方法模式,它也是使用频率最高的工厂模式。本章将要学习的简单工厂模式是工厂方法模式的“小弟”,它不属于GoF 23种设计模式,但在软件开发中应用也较为频繁,通常将它作为学习其他工厂模式的入门转载 2016-01-03 20:03:21 · 222 阅读 · 0 评论 -
工厂三兄弟之工厂方法模式
本文转载自 :http://blog.csdn.net/lovelion/article/details/9306457简单工厂模式虽然简单,但存在一个很严重的问题。当系统中需要引入新产品时,由于静态工厂方法通过所传入参数的不同来创建不同的产品,这必定要修改工厂类的源代码,将违背“开闭原则”,如何实现增加新产品而不影响已有代码?工厂方法模式应运而生,本文将介绍第二种工厂模式——转载 2016-01-03 20:07:52 · 369 阅读 · 0 评论 -
工厂三兄弟之抽象工厂模式
本文转载自 :http://blog.csdn.net/lovelion/article/details/9319181工厂方法模式通过引入工厂等级结构,解决了简单工厂模式中工厂类职责太重的问题,但由于工厂方法模式中的每个工厂只生产一类产品,可能会导致系统中存在大量的工厂类,势必会增加系统的开销。此时,我们可以考虑将一些相关的产品组成一个“产品族”,由同一个工厂来统一生产,这就转载 2016-01-03 20:11:40 · 396 阅读 · 0 评论 -
遍历聚合对象中的元素——迭代器模式
本文转载自 :http://blog.csdn.net/lovelion/article/details/999200520世纪80年代,那时我家有一台“古老的”电视机,牌子我忘了,只记得是台黑白电视机,没有遥控器,每次开关机或者换台都需要通过电视机上面的那些按钮来完成,我印象最深的是那个用来换台的按钮,需要亲自用手去旋转(还要使点劲才能拧动),每转一下就“啪”的响一声,如果没转载 2016-01-03 20:14:46 · 1278 阅读 · 0 评论 -
请求发送者与接收者解耦——命令模式
本文转载自 :http://blog.csdn.net/lovelion/article/details/8796736装修新房的最后几道工序之一是安装插座和开关,通过开关可以控制一些电器的打开和关闭,例如电灯或者排气扇。在购买开关时,我们并不知道它将来到底用于控制什么电器,也就是说,开关与电灯、排气扇并无直接关系,一个开关在安装之后可能用来控制电灯,也可能用来控制排气扇或者其转载 2016-01-03 20:19:15 · 603 阅读 · 0 评论 -
协调多个对象之间的交互——中介者模式
本文转载自 :http://blog.csdn.net/lovelion/article/details/8482952腾讯公司推出的QQ作为一款免费的即时聊天软件深受广大用户的喜爱,它已经成为很多人学习、工作和生活的一部分(不要告诉我你没有QQ哦,)。在QQ聊天中,一般有两种聊天方式:第一种是用户与用户直接聊天,第二种是通过QQ群聊天,如图20-1所示。如果我们使用图20-1转载 2016-01-03 20:29:42 · 1270 阅读 · 0 评论 -
外观模式
本文转载自 :http://blog.csdn.net/lovelion/article/details/8258121外观模式是一种使用频率非常高的结构型设计模式,它通过引入一个外观角色来简化客户端与子系统之间的交互,为复杂的子系统调用提供一个统一的入口,降低子系统与客户端的耦合度,且客户端调用非常方便。 1. 外观模式概述 不知道大家有没有比较转载 2016-01-03 20:33:39 · 380 阅读 · 0 评论 -
代理模式
本文转载自 :http://blog.csdn.net/lovelion/article/details/8227953代理模式是常用的结构型设计模式之一,当无法直接访问某个对象或访问某个对象存在困难时可以通过一个代理对象来间接访问,为了保证客户端使用的透明性,所访问的真实对象与代理对象需要实现相同的接口。根据代理模式的使用目的不同,代理模式又可以分为多种类型,例如保护代理、远程代转载 2016-01-03 20:37:31 · 563 阅读 · 0 评论 -
树形结构的处理——组合模式
本文转载自 :http://blog.csdn.net/lovelion/article/details/7956898树形结构在软件中随处可见,例如操作系统中的目录结构、应用软件中的菜单、办公系统中的公司组织结构等等,如何运用面向对象的方式来处理这种树形结构是组合模式需要解决的问题,组合模式通过一种巧妙的设计方案使得用户可以一致性地处理整个树形结构或者树形结构的一部分,也可以转载 2016-01-03 20:42:22 · 2428 阅读 · 0 评论 -
算法的封装与切换——策略模式
本文转载自 :http://blog.csdn.net/lovelion/article/details/7818983俗话说:条条大路通罗马。在很多情况下,实现某个目标的途径不止一条,例如我们在外出旅游时可以选择多种不同的出行方式,如骑自行车、坐汽车、坐火车或者坐飞机,可根据实际情况(目的地、旅游预算、旅游时间等)来选择一种最适合的出行方式。在制订旅行计划时,如果目的地较远、转载 2016-01-03 20:45:32 · 819 阅读 · 0 评论 -
对象间的联动——观察者模式
本文转载自 :http://blog.csdn.net/lovelion/article/details/7720232观察者模式是设计模式中的“超级模式”,其应用随处可见,在之后几篇文章里,我将向大家详细介绍观察者模式。 “红灯停,绿灯行”,在日常生活中,交通信号灯装点着我们的城市,指挥着日益拥挤的城市交通。当红灯亮起,来往的汽车将停止;而绿灯亮起转载 2016-01-03 20:55:41 · 826 阅读 · 0 评论