
---设计模式
「已注销」
这个作者很懒,什么都没留下…
展开
-
设计模式——代理模式
初识代理模式(Proxy),为其他对象提供一种代理以控制对这个对象的访问。原创 2019-02-21 21:31:00 · 236 阅读 · 16 评论 -
设计模式——享元模式
初识享元模式(Flyweight),运用共享技术有效地支持大量细粒度的对象。举个最简单的例子,网络联机下棋的时候,一台服务器连接了多个客户端(玩家),如果我们每个棋子都要创建对象,那一盘棋可能就有上百个对象产生,玩家多点的话,因为内存空间有限,一台服务器就难以支持了,所以这里要使用享元模式,将棋子对象减少到几个实例。结构角色FlyweightFactory:一个享元工厂,用来创建并管...原创 2019-02-26 21:25:20 · 319 阅读 · 18 评论 -
设计模式——访问者模式
初识访问者模式(Visitor),表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。访问者模式,是行为型设计模式之一。访问者模式是一种将数据操作与数据结构分离的设计模式,它可以算是 23 中设计模式中最复杂的一个,但它的使用频率并不是很高,大多数情况下,你并不需要使用访问者模式,但是当你一旦需要使用它时,那你就是需要使用它了。访问者...原创 2019-03-08 15:47:03 · 314 阅读 · 11 评论 -
设计模式——职责链模式
初识职责链模式(Chain of Responsibility):使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这个对象连成一个链,并沿着这条链传递该请求,直到有一个对象处理它为止。结构角色:Handler类:定义一个处理请示的接口ConcreteHandler类,处理它所负责的请求,可访问它的后继者,如果可处理该请求,就处理之,否则就将该请求转发给它...原创 2019-03-03 17:39:38 · 313 阅读 · 12 评论 -
设计模式——备忘录模式
初识备忘录(Memento):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。把要保存的细节封装在一个类中,在保存此状态时,可以隐藏内部细节。 如要更改保存的细节,这样也不用对客户端进行改动了。结构角色:Originator类:负责创建一个备忘录Memento,用以记录当前时刻它的内部状态,并可使用备忘录恢复...原创 2019-03-06 16:22:27 · 209 阅读 · 13 评论 -
设计模式——单例模式
初识单例模式(Singleton),保证一个类仅有一个实例,并提供一个访问它的全局访问点。是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的一个类只有一个实例。即一个类只有一个对象实例。结构角色:Singleton类:定义一个GetInstance操作,允许客户访问它的唯一实例,GetInstance是一个静态方法,主...原创 2019-03-14 09:38:50 · 214 阅读 · 21 评论 -
设计模式——中介者模式
初识在我们的生活中处处充斥着“中介者”,比如你租房、买房、出国留学、找工作、旅游等等可能都需要那些中介者的帮助,同时我们也深受其害,高昂的中介费,虚假信息。在地球上最大的中介者就是联合国了,它主要用来维护国际和平与安全、解决国际间经济、社会、文化和人道主义性质的问题。国与国之间的关系异常复杂,会因为各种各样的利益关系来结成盟友或者敌人,熟话说没有永远的朋友,也没有永远的敌人,只有永远的利益!...原创 2019-03-09 19:48:55 · 343 阅读 · 11 评论 -
设计模式分类
创建型模式:工厂方法模式、抽象工厂模式、原型模式、单例模式、建造者模式结构型模式:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式行为型模式:策略模式、模板方法模式、观察者模式、迭代器模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式根据目的、用途不同,将设计模式分为三类创建型模式主要对类的实例化过程进行了抽象,能够将软件模块中对...原创 2019-03-19 15:20:03 · 244 阅读 · 45 评论 -
设计模式——状态模式
初识状态模式(State),当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。顾名思义,我们学习包括做其他事情时,都会有自己的状态,状态好,效率好,状态不好,困了,效率低下。这就是内在状态改变了其行为,看起来像是改变了其类。结构角色:Context类:维护一个ConcreteState子类的实例,这个实例定义当前的状态。State类:抽象状态类,定义一个...原创 2019-03-08 09:50:12 · 246 阅读 · 11 评论 -
设计模式——解释器模式
初识如果在系统中某一特定类型的问题发生的频率很高,此时可以考虑将这些问题的实例表述为一个语言中的句子,因此可以构建一个解释器,该解释器通过解释这些句子来解决这些问题。解释器模式描述了如何构成一个简单的语言解释器,主要应用在使用面向对象语言开发的编译器中。解释器模式(Interpreter)给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。...原创 2019-03-12 09:25:26 · 228 阅读 · 7 评论 -
设计模式——命令模式
初识命令模式(Command),将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。结构角色:Invoker类:要求该命令执行这个请求Command类:用来声明执行操作的抽象类或接口ConcreteCommand类:将一个接受者对象绑定于一个动作,调用接收者相应的操作,以实现ExecuteReceiver类:知道...原创 2019-03-05 20:40:32 · 296 阅读 · 10 评论 -
设计模式——装饰模式
初识装饰模式(Decorator),动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。结构角色:Component类:定义一个对象接口,可以给这些对象动态地添加职责。ConcreteComponent类:定义了一个具体的对象,也可以给这个对象添加一些职责。Decorator类:装饰抽象类,继承了Component,从外类扩展Component类的功能,...原创 2019-02-20 17:49:47 · 206 阅读 · 15 评论 -
设计模式——工厂三兄弟+反射
工厂方法模式大学生与志愿者static void Main(string[] args){ IFactory factory = new UndergrauateFactory(); LeiFeng student = factory.CreateLeiFeng(); student.BuyRice(); student.Sweep()...原创 2019-02-16 22:39:33 · 287 阅读 · 14 评论 -
设计模式——外观模式
初识外观模式(Facade),为了系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。结构角色SubSystem子类,子系统类集合实现子系统的功能,处理Facade对象指派的任务。注意子类中没有Facade的任何信息,即没有对Facade对象的引用。Facade外观类,知道哪些子系统类负责处理请求,将客户的请求代理给适当的子系统对象。...原创 2019-02-22 16:33:46 · 200 阅读 · 19 评论 -
设计模式——策略模式
初识策略模式(Strategy):它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。是一种行为型模式。理解:策略模式将每种算法进行封装,并让算法继承于抽象超类。在使用算法的环境中针对抽象策略类,而不是针对具体算法,符合开放-封闭原则。结构图角色:(1)Context(环境类):负责使用算法策略,其中维持了一个抽象策略类的引用实例。...原创 2019-02-27 19:30:34 · 253 阅读 · 23 评论 -
设计模式——桥接模式
初识桥接模式(Bridge)是一种结构型设计模式。Bridge模式基于类的最小设计原则,通过使用封装、聚合及继承等行为让不同的类承担不同的职责。它的主要特点是把抽象(Abstraction)与行为实现(Implementation)分离开来,从而可以保持各部分的独立性以及应对他们的功能扩展。结构应用电脑品牌分为:戴尔、联想、华硕、惠普等。而操作系统又分为windows,Linux等。我们...原创 2019-02-23 16:25:57 · 195 阅读 · 18 评论 -
设计模式——六大原则
文章目录原则一:单一职责原则原则二:开放-封闭原则原则三:依赖倒转原则原则四:里氏转换原则原则五:迪米特原则原则一:单一职责原则单一职责原则(SRP:Single responsibility principle)又称单一功能原则,面向对象五个基本原则(SOLID)之一。它规定一个类应该只有一个发生变化的原因。单一职责原则:如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变...原创 2019-02-12 21:29:28 · 816 阅读 · 11 评论 -
设计模式——模板方法模式
初识模板方法模式(TemplateMethod):定义一个算法中的操作框架,而将一些步骤延迟到子类中。使得子类可以不改变算法的结构即可重定义该算法的某些特定步骤。结构角色:AbstractClass类,实现了一个模板方法,定义了算法的骨架,具体子类将重定义PrimitiveOperation以实现一个算法的步骤。ConcreteClass类:实现PrimitiveOperati...原创 2019-02-28 15:30:32 · 236 阅读 · 12 评论 -
设计模式——组合模式
初识组合模式(Composite),将对象组合成树形结构来表现”部分-整体“的层次结构,使得客户以一致的方式处理单个对象以及对象的组合。组合模式实现的最关键的地方是——简单对象和复合对象必须实现相同的接口。这就是组合模式能够将组合对象和简单对象进行一致处理的原因。结构角色:组合部件(Component):它是一个抽象角色,为要组合的对象提供统一的接口。叶子(Leaf):在组合中表示...原创 2019-02-24 20:58:01 · 224 阅读 · 28 评论 -
设计模式——适配器模式
初识适配器模式(Adapter),将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。结构由图可知适配器模式包含三个角色:1:Target(目标抽象类):目标抽象类定义客户所需的接口,可以是一个抽象类或接口,也可以是具体类。在类适配器中,由于C#语言不支持多重继承,所以它只能是接口。2:Adapter(适配器类):它可...原创 2019-02-20 13:16:09 · 288 阅读 · 18 评论 -
设计模式——观察者模式+事件委托
初识观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发送变化时,会通知所有观察者对象,使它们能够自动更新自己。结构图角色:Subject类:它把所有对观察者对象的引用保存在一个聚集里,每个主题都可以有任何数量的观察者。抽象主题提供一个接口,可以增加和删除观察者对象。Obserber类:抽象观察者,为所有的具体观察者定义一个接口,...原创 2019-03-01 21:12:01 · 436 阅读 · 12 评论 -
设计模式——原型模式
初识原型模式(Prototype),用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。在原型模式中,所发动创建的对象通过请求原型对象来拷贝原型对象自己来实现创建过程,当然所发动创建的对象需要知道原型对象的类型。这里也就是说所发动创建的对象只需要知道原型对象的类型就可以获得更多的原型实例对象,至于这些原型对象时如何创建的根本不需要关心。结构角色: Prototy...原创 2019-03-13 15:41:47 · 248 阅读 · 13 评论