【设计模式】
Elsa~
这个作者很懒,什么都没留下…
展开
-
委托和事件的区别(讲的很详细)
原文地址委托 和 事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易。它们就像是一道槛儿,过了这个槛的人,觉得真是太容易了,而没有过去的人每次见到委托和事件就觉得心里别(biè)得慌,混身不自在。本文中,我将通过两个范例由浅入深地讲述什么是委托、为什么要使用委托、事件的由来、.Net Framework中的委托和事件、委托和事件...转载 2020-02-26 16:12:30 · 1729 阅读 · 4 评论 -
Decorator Pattern(装饰者模式)与Bridge Pattern (桥接模式)的区别
【相同点】两个模式都是为了解决子类过多的问题而运用的。【不同点】导致子类过多的诱因不同,解决的问题也不同。 【桥接模式】------------------------------------------------------------------------...原创 2020-03-10 19:54:36 · 644 阅读 · 4 评论 -
Builder Pattern(建造者模式/构造器模式/生成器模式 ) 与FactoryMethod Pattern(工厂方法模式)的区别
建造者模式与工厂方法模式都属于创建型设计模式,他们的应用环境都是在创建对象时运用。那他们的不同之处在哪里呢?【宏观】建造者模式比工厂模式关注的更加深入,工厂只关心把整体的对象创建出来,而建造者模式更加深入的关心了实例化的对象是如何一步一步按照流程(各子对象的组装算法)创建出来的,这个创建的流程(算法)是固定的,但可以创造出不同的表示(对象)。工厂方法:比如我们客户端想要盖一栋别墅,...原创 2020-02-04 09:48:36 · 780 阅读 · 5 评论 -
设计模式之------状态者模式(State Pattern)
一、概念①、什么是状态者模式?当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。②、主要解决什么问题?对象的行为依赖于它的状态(属性),并且可以根据它的状态改变而改变它的相关行为。③、如何解决?将各种具体的类抽象出来。④、应用实例?打篮球的时候运行员可以有正常状态、不正常状态和超长状态。⑤、使用场景?1、行为随状态改变而改变的场景。...原创 2019-04-07 22:10:59 · 314 阅读 · 12 评论 -
设计模式之------观察者模式(Observer Pattern)
一、概念①、什么是观察者模式? 定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通过所有观察者对象,使它们能够自动更新自己。②、主要解决什么问题? 一个对象状态改变给其他对象通知的问题,而且要考虑到易用和低耦合,保证高度的协作。③、如何解决? 使用面向对象技术,可以将这种依赖关系弱化。...原创 2019-03-24 17:16:01 · 329 阅读 · 20 评论 -
设计模式之------访问者模式(Visitor Pattern)
一、概念①、什么是访问者模式? 表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。②、访问者模式中例子为什么是男人、女人呢,与访问者是什么关联呢,谁是访问者,谁是被访问者? 个人理解:我们将对象结构看成是一个“房间”,将男人女人实例化到对象结构中去,可以看做是在对象结构这个“屋子”中放入一个男人,一...原创 2019-03-30 17:18:03 · 283 阅读 · 24 评论 -
设计模式之------解释器模式(Interpreter Pattern )
一、概念①、什么是解释器模式? 给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。②、主要解决什么问题? 对于一些固定文法构建一个解释句子的解释器。③、如何解决? 构建语法树,定义终结符与非终结符④、何时使用? 如果一种特定类型的问题发生的频率足够高,那么可能就值得该问...原创 2019-03-16 11:31:25 · 337 阅读 · 12 评论 -
设计模式之------备忘录模式(Memento Pattern)
一、概念①、什么是备忘录模式? 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。②、主要解决的问题? 恢复原有数据③、如何解决? 通过一个备忘录类专门存储对象状态。④、代码关键点? 为了符合迪米特原则,需要增加一个管理备忘录的类;客户不与备忘录类耦合...原创 2019-03-06 16:35:33 · 455 阅读 · 8 评论 -
设计模式之------享元模式(Flyweight Pattern):内部状态(Instrinsic State)\外部状态(Extrinsic State)
一、概念①、什么是享元模式? 运用共享技术有效地支持大量细粒度的对象。②、什么是细粒度对象?享元模式的两个状态? 在分析什么是细粒度对象之前,我们现了解一下享元对象的两个状态:内部状态和外部状态。 在享元对象内部并且不用随环境改变而改变的共享部分,成为享元对象的内部状态,而随环境改变而改变的、不可以共享的状态就是外部状态。内部状态存储于Con...原创 2019-02-27 09:38:21 · 2752 阅读 · 13 评论 -
设计模式之------命令模式(Command Pattern)
一、概念①、什么是命令模式? 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。 是一种数据驱动的设计模式,它属于行为型模式,请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。②、主要解决什么问题? 在软件系...原创 2019-03-05 18:46:33 · 6618 阅读 · 13 评论 -
设计模式之------模板方法模式(Template Method Pattern)
一、概念①、什么是模板模式? 定义一个操作中的算法骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。②、主要解决的问题? 一些方法通用,却在每一个子类都重写了这一方法。③、如何解决? 将这些通用算法抽象出来。④、优缺点? 优点: 1、封装不变部分,...原创 2019-02-28 15:46:58 · 246 阅读 · 9 评论 -
设计模式之------组合模式(Composite Pattern)
一、概念①、什么是组合模式? 组合模式又叫部分整体模式,是用于把一组相似的对象当做一个单一的对象。组合模式依据树型结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构性模式,它创建了对象组的树形结构。②、主要解决的问题? 它在树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以向处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的...原创 2019-02-25 10:44:30 · 390 阅读 · 15 评论 -
设计模式之------桥接模式(Bridge Pattern)
一、概念①、什么是桥接模式?将抽象部分与它的实现部分分离,是它们都可以独立地变化。它是一种对象结构型模式,又称为柄体模式或接口模式。用于把抽象化与实现化解耦,使得二者可以独立变化。它通过提供抽象化和实现化之间的桥接结构来实现二者的解耦。②、主要解决什么问题?解决在多种可能会变化的情况下,用继承会造成类爆炸问题,扩展起来不灵活。③、什么时候使用?实现系统可能有多个角度分类...原创 2019-02-23 17:00:21 · 297 阅读 · 17 评论 -
设计模式之------装饰模式(Decorator Pattern)
一、概念①、什么是装饰模式? 装饰模式指的是在不必改变原文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰Decorate()来包裹真实的对象。 个人理解:装饰模式就是在对象已有功能基础上的拓展,好比Word文档中的字体:刚开始是宋体,后面想要添加一个加粗的功能,则在宋体的基础上进行加粗,这是一层装饰;后面又想一个功能:斜体,这是在...原创 2019-02-20 19:54:19 · 337 阅读 · 13 评论 -
设计模式之------外观模式(Facade Pattern)
一、概念①、什么是外观模式? 外观模式(Facade)亦称为“过程模式”,为子系统中的一组接口提供一个一致的界面,这个外观类为子系统提供一个共同的对外接口,客户对象通过一个外观接口读写子系统中各接口的数据资源。②、什么情况下用外观模式? (1)设计初期阶段,应该有意识的将不同层分离,层与层之间建立外观模式。 (2) 开发阶段,子系统越来越复杂,增...原创 2019-02-22 16:20:54 · 271 阅读 · 16 评论