♥ 设计模式
星辰_mya
好好学习,天天向上
展开
-
组合模式
组合模式:透明方式; 安全方式原创 2016-02-01 17:00:42 · 513 阅读 · 5 评论 -
迭代器模式
迭代器模式:提供一种顺序访问聚合对象中各个元素的方法,同时又不暴露该对象的内部表示。为遍历不同的聚集结构提供 如:开始、下一个、是否结束、当前哪一项 等 (统一的)接口适用场景:访问聚集对象,不管对象是什么 都 需要遍历的时候需要对聚集有多种方式遍历时(售票员查票:从头到尾、从尾到头)结构图:代码:namespace 迭代器模式{原创 2016-02-01 20:11:38 · 495 阅读 · 5 评论 -
多态之精华
最近开始学设计模式,进度有些慢,不知不觉中这个项目拖了好长时间,不过、套用一位网编朋友说过的话,虽然个人感觉这话有些—— ——另类:我不是不奋斗的人,菇娘奋斗起来不是人。O(∩_∩)O哈哈,下面进入正题:多态!那么问题来了:什么是多态?好搜百科称之曰: 多态(Polymorphism)按字面的意思就是"多种状态"。在面向对象语言中,接口的多种不同的实现方式即为多态。引用Char原创 2016-01-20 19:57:55 · 582 阅读 · 16 评论 -
字符串中的智慧(一)
字符串可大可小,就像我们一样(*^__^*) 一、字符串和数组字符串变成char数组字符数组变成字符串string text = "你好,好久不见";char[] chs = text.ToCharArray(); //把字符串text转换成char数组text=new string(chs);//把char数组转换成string(上面text已经定义成string)Co原创 2015-12-20 09:27:43 · 1075 阅读 · 44 评论 -
桥接模式
桥接模式: 抽象部分与它的实现部分分离,都可以独立变化。 桥接就是为被分离了的 抽象部分Abstraction 和 实现部分Implementor 来搭桥,比如下面要介绍的手机软件和手机品牌之间搭个桥,手机品牌包含有手机软件,但是手机软件并不是手机品牌的一部分,他们这间是聚合的关系,这也说明在桥接模式中的桥接是单向的,也就是只能是抽象部分的对象去使用具体实现部分的原创 2016-02-02 20:54:47 · 668 阅读 · 6 评论 -
命令模式
命令模式: 将一个请求封装为一个对象,使得可用不同的请求对客户进行参数化(区分),对请求排队或记录请求日志,及支持可撤销操作。 具体来说:去饭店吃饭,客户Clinet点完餐(发出命令或请求)之后等着就行了,不需要关心真正地服务员(接收信息者)是谁、叫什么名字,也不需要关心饭菜谁去做,怎么做,自然会有相应的服务人员nvoker去通知、记录,相应的厨师Receiv原创 2016-02-03 16:51:48 · 554 阅读 · 7 评论 -
职责链模式
职责链模式: 使得多个对象都有机会处理请求,从而避免请求的发送者和接收者间的耦合关系;将这个对象连成一条链,并沿着这条链传递该请求,直达有一个对象处理他。处理类有能力处理请求就处理,不能的话就将该请求转发给他的后继者。这样就有一种隐患:请求很可能得不到处理,因此使用时需要事先考虑全面,需要事先给每个处理类设置后继者,在处理请求时判断是否可以处理该请求、是否要转移给后继者。原创 2016-02-04 19:24:36 · 581 阅读 · 8 评论 -
単例模式
単例模式:这是一个很好理解的模式;该模式保证一个类仅有一个实例,并提供一个访问他的全局访问点。结构图:原创 2016-02-02 11:59:00 · 649 阅读 · 7 评论 -
设计模式之工厂方法
今天周四但是感觉上个周四距离现在好久远,为什么要说上周四?因为上周 四 在下被光荣地临危、不、临时授权、担当了一次策划者,虽然活动办得差强人意,haha~~just kidding ,活动还是很happy的,当然我说的是前面的游戏环节,我们玩了“谁是卧底?”、“我说你猜”等经典的游戏,到底有多经典呐?金田说他“这周都玩了两次这个游戏了”,喜爱之情溢于言表啊 言归正传,后来 我们开始了重头戏——原创 2016-09-09 22:48:35 · 643 阅读 · 31 评论 -
观察者模式与委托
Observer设计模式 :是为了定义对象间的一种一对多的依赖关系,以便于当一个对象的状态改变时,其他依赖于它的对象会被自动告知并更新。Observer模式是一种松耦合的设计模式。Subject:监视对象,它往往包含着其他对象所感兴趣的内容。在本范例中,热水器就是一个监视对象,它包含的其他对象所感兴趣的内容,就是temprature字段,当这个字段的值快到100时,会不断把数据发原创 2016-03-26 19:59:27 · 1214 阅读 · 48 评论 -
中介者模式
中介者模式: 调停者模式,用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变他们间的交互。 需要一个中间人或者调停者;系统分割成许多对象——增加复用性结构图:优缺点:由于concretemediator控制了集中化,于是把交互复制性变成了中介者的复杂性减少了同事类colle原创 2016-02-13 17:58:59 · 608 阅读 · 10 评论 -
我真的用“外观”模式了吗?
背景: 最近在补UML图,通过查资料对UML图有了更多的认识和了解,还是直接上图好了: 经过学习这次画图就不能和之前一样low了,所以决定来点复杂的图,机房收费中用到了外观,好像比较复杂、那就画他了,在画的过程当中通过看书查资料,竟然感觉无从下手,不知道怎么画了,细想想——我真的用“外观”了吗?看着我像是用了,但是外观模式的作用完全没有体现出来,常常是一个外观原创 2016-05-04 12:09:27 · 1786 阅读 · 27 评论 -
【单例模式】再学习
之前比较系统的学习了二遍设计模式,一个c#一个java、当然本质没有区别,模式中的精髓:思想都还一样,还是学习的不够,需要反复的学习名词解释:volatile:类型修饰符: https://baike.baidu.com/item/volatile/10606957?fr=aladdin 修饰被不同线程访问和修改的...转载 2018-04-19 09:42:38 · 178 阅读 · 7 评论 -
【java+设计模式】
【前言】 文件上传走到后台的时候需要填充文件的类型、不同的类型对文件大小有不同的限制,这个if写的话很快但是不太好,想起了策略模式,上网查了一些资料,网上的资料挺多但是…… 怎么说? 看博客或者论坛 感觉思路清晰、逻辑连贯、一气呵成、无可挑剔、废不多话、进入正题【正文】 之前写过类似的博客,当然只是说了想法和思路,今天就来代码实践一下吧(本脑跑成功了,泥萌的—自求多福、开玩笑开玩...原创 2018-05-28 09:42:35 · 525 阅读 · 9 评论 -
备忘录模式
备忘录模式: 不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样当需要时就可以很方便地将该对象恢复到原先保存的状态。简单的说就是通过一个备忘录来保存对象现有状态以便以后(调用备忘录)回滚到该状态。 适应于功能比较复杂的,需要维护、记录属性历史 的 类。 当角色改变的新状态无效时,可以使用备忘录将状态复原。 备忘原创 2016-02-01 13:58:23 · 806 阅读 · 5 评论 -
状态模式
状态模式: 当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。读起来有些绕,这样写就不一样了:允许一个对象在其内部状态改变时改变它的行为,这个对象看上去就像是改变了他的类一样。状态模式把所研究的对象的行为包装在不同的状态对象里,把状态的判断逻辑转移到表示不同状态的一系列类当中,每一个状态对象都属于一个抽象状态类的一个子类。状态模式的意图是让一个对象在其内部状态改变的原创 2016-01-31 15:48:57 · 554 阅读 · 7 评论 -
装饰模式
装饰模式: 动态地给对象添加一些额外的职责,其比生成子类更加的灵活。结构图: 纯粹的装饰模式很难找到。装饰模式的用意是在不改变接口的前提下,增强所考虑的类的性能。在增强性能的时候,往往需要建立新的公开的方法。在下面的例子中人类,在Finery基础上新增了TShirt、BigTrouser等新方法,他们都有各自的方法并且以此来与其他方法保持自己的独特性,而且职责单一,原创 2016-01-25 20:44:51 · 560 阅读 · 17 评论 -
代理模式
代理模式 是一个比较简单的模式;代理 可以理解为中介或者桥梁。主要是为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。 class Program { static void Main(string[] args) {原创 2016-01-26 10:06:06 · 546 阅读 · 15 评论 -
简单工厂模式与工厂方法模式
简单工厂模式: 简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。(百科)最大的优点是包含了必要的逻辑判断,根据客户端选择条件动态实例化相关的类,对原创 2016-01-26 17:20:51 · 609 阅读 · 23 评论 -
简单工厂与策略模式
简单工厂模式、策略模式、简单工厂和策略的比较与结合、原创 2016-01-24 16:44:14 · 808 阅读 · 14 评论 -
模板方法模式
模板方法模式:简单的来说模板方法模式是将子类中重复、不变的代码搬移到超类中;定义一个操作中算法的骨架,而将一些步骤延迟到子类中;使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。如下面这份十分”主观“的试卷,试题是不变的,变得是答案,所以模板方法闪亮登场——将试题、选项抽象一个父类:AbstractClass,两个子类TestpaperA、B继承他。 class Prog原创 2016-01-29 11:25:02 · 561 阅读 · 17 评论 -
原型模式
原型模式: 用原型实例指定要创建的对象的种类(可定制),并且通过拷贝这些原型来创建新的对象(不需要知道创建的细节)——提高性能,动态获得对象运行时的状态。 .NET在System命名空间中提供了ICloneable接口,唯一的方法Clone()克隆,因此只要实现该接口就可以完成原型模式,所以原型抽象类Prototype是不需要的。结构图:进一步探究这里还涉及到了原创 2016-01-27 20:46:41 · 682 阅读 · 25 评论 -
迪米特法则
迪米特法则: 又称:最少知识原则;如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用,如果其中一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用。关键的是: 不直接通信 不直接相互作用 第三方转发 其前提是在类的结构设计上,每一个类都应当尽量降低成员的访问权限,即包装好自己的私有原创 2016-01-29 16:51:35 · 631 阅读 · 17 评论 -
外观模式
外观模式,何时使用外观模式,外观模式结构图以及结构图原创 2016-01-29 20:41:14 · 705 阅读 · 15 评论 -
抽象工厂模式
抽象……工厂模式: 提供了一个创建一系列相关或相互依赖对象的接口,不需要指定他们具体的类。义如其名——抽象,开始读不太懂,但是细读吧,感觉这个定义言简意赅地说明了抽象工厂最大的特点。下面结合结构图来说一下: AbstractProductA和 AbstractProductB 因为有多种实现所以是抽象产品,书上对这个图解析的也很是到位,感觉很容易理解。原创 2016-01-30 21:01:21 · 529 阅读 · 9 评论 -
工厂三姐妹
简单工厂、工厂方法、抽象工厂原创 2016-01-30 21:38:19 · 691 阅读 · 8 评论 -
值类型和引用类型,形参和实参,传值和传引用
C# 中有两种类型:引用类型和值类型。传值,传引用——多角度论述,力求清晰、准确原创 2016-01-28 19:57:35 · 2586 阅读 · 20 评论 -
《大话设计模式》导图总结
大话设计是一本很有意思的书,就像这本书说的那样:设计模式的趣味解读,面向对象的深入剖析。通过学习这本书真是在诙谐与温馨中做了一次面向对象编程思想的体操。通过学习对设计模式还有五大设计原则有了一些很多的接触,学到了很多知识,但是学习的速度明显有些慢了,进度还是要赶的,奋起。 导图总结嘛,所以上完导图就不废话了。 共同交流,多多指教(*^__^*)原创 2016-02-13 17:38:09 · 798 阅读 · 13 评论 -
享元模式
享元模式: 运用共享技术有效地支持大量细粒度的对象。避免相似类的开销。 大量细粒度的实例来表示数据;如果除了参数外其他相同,就能够大幅度减少需要实例化的类的数量。把这些参数移到类实例外面,在方法调用时将他们传递进来,可以通过共享减少单个实例的数量。(享元模式flyweight执行时所需的状态有内部、外部,内部存储于concreteflyweight对象中,外部对象考虑由客户原创 2016-02-13 19:19:33 · 631 阅读 · 14 评论 -
解释器模式
解释器模式: 给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。如同开放了一个编程语言或脚本给自己或者别人使用:将一句话、指令,转变成实际的命令程序执行。比如:输入“开始”——解释器(文法)——开始执行“开始”这个操作。 最终、最小的文法规则就是终结符表达式 每个非终结符表达式都代表了一原创 2016-02-13 19:47:14 · 747 阅读 · 18 评论 -
【设计模式】分情况调用接口
【前言】      博客不能停【正文】      背景:我要从贝瓦调用接口获取数据,比如指定频道下的作品,指定专辑下的作品,频道下的标签,指定作品所属标签,频道、专辑、作品、标签、关键词不同的排列组合就是不同的接口,我原创 2018-05-24 16:10:42 · 521 阅读 · 9 评论