设计模式
记录学习过的设计模式
闪电Y黑客
这个作者很懒,什么都没留下…
展开
-
C#设计模式:总目录
设计模式7大原则开闭原则(OCP)依赖倒置原则(DIP)里氏代换原则(LSP)单一职责原则(SRP)接口隔离原则(ISP)合成复用原则(CRP)迪米特法则(LOD)设计模式:创建型模式:工厂模式(Factory Pattern)单例模式(Singleton Pattern)建造者模式(Builder Pattern)原型模式(Prototype Pattern)结构型模式:适配器模式(Adapter Pattern)装饰器模...原创 2020-11-05 18:24:14 · 528 阅读 · 0 评论 -
C#设计模式:23.解释器模式 u3d学习总结笔记本
解释器模式(Interpreter Pattern)提供了评估语言的语法或表达式的方式,它属于行为型模式。这种模式实现了一个表达式接口,该接口解释一个特定的上下文。这种模式被用在 SQL 解析、符号处理引擎等。如果一种特定类型的问题发生的频率足够高,那么可能就值得将该问题的各个实例表述为一个简单语言中的句子,这样就可以构建一个解释器,该解释器通过解释这些句子来解决该问题。就比如正则表达式,它就是解释器模型的一种应用,解释器为正则表达式定义了一个文法,如何表示一个特定的正则表达式,以及如何解释这个原创 2020-10-29 18:45:16 · 317 阅读 · 0 评论 -
C#设计模式:22.原型模式 u3d学习总结笔记本
原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。例如,一个对象需要在一个高代价的数据库操作之后被创建。我们可以缓存该对象,在下一个请求时返回它的克隆,在需要的时候更新数据库,以此来减少数据库调用。与通过对一个类进行实例化来构造新对象不同的是,原型模式是通过拷贝一个现有对象生成新对.原创 2020-10-29 17:25:45 · 190 阅读 · 0 评论 -
C#设计模式:21.迭代器模式 u3d学习总结笔记本
迭代器模式(Iterator Pattern)提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示。迭代器模式属于行为型模式。使用场景:访问一个聚合对象的内容而无须暴露它的内部表示。 需要为聚合对象提供多种遍历方式。 为遍历不同的聚合结构提供一个统一的接口。优点:它支持以不同的方式遍历一个聚合对象。 迭代器简化了聚合类。 在同一个聚合上可以有多个遍历。 在迭代器模式中,增加新的聚合类和迭代器类都很方便,无须修改原有代码。缺点:...原创 2020-10-29 16:26:28 · 149 阅读 · 0 评论 -
C#设计模式:20.装饰器模式 u3d学习总结笔记本
装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。对客户端透明的方式扩展对象的功能,继承关系的替代方案。场景:1.需要扩展一个类的功能2.需要动态的给一个对象增加功能,也可以动态的撤销3.需要增加大量排列组合的功能,继承关系不现实优点:装饰类和被装饰类可以独立发展,不会相互耦合,装饰模式是继承的一个替代模式,装饰模式可以动态扩展一个实现类的功能。 比..原创 2020-10-28 19:01:11 · 203 阅读 · 0 评论 -
C#设计模式:19.代理模式 u3d学习总结笔记本
代理模式(Proxy Pattern)原创 2020-10-27 18:14:55 · 202 阅读 · 0 评论 -
C#设计模式:18.适配器模式 u3d学习总结笔记本
适配器模式(Adapter Pattern)把一个类的接口变换成客户端所期待的另一种接口,从而使原本接口不匹配而无法一起工作的两个类能够在一起工作。其实这个设计模式的名字,已经把他的功能说明的很清楚了,就是将不同接口的类,运用适配器,使得可以使用同一接口统一调用。适配器可以是抽象类,并适配器模式的实现是非常灵活的,我们完全可以将Adapter模式中的“现存对象”作为新的接口方法参数,适配器类可以根据参数参数可以返回一个合适的实例给客户端。类的适配器模式是定义一个接口来实现客户端想要的方法,.原创 2020-10-24 18:23:41 · 189 阅读 · 0 评论 -
C#设计模式:17.访问者模式 u3d学习总结笔记本
访问者模式(Visitor Pattern)原创 2020-10-23 18:25:01 · 188 阅读 · 0 评论 -
C#设计模式:16.备忘录模式 u3d学习总结笔记本
备忘录模式(Memento Pattern)保存一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于行为型模式。所谓备忘录模式就是在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。优点:1、给用户提供了一种可以恢复状态的机制,可以使用户能够比较方便地回到某个历史的状态。 2、实现了信息的封装,使得用户不需要关心状态的保存细节。缺点:消耗资源。如果类的成员变量过多,势必会占用比较大的资源,而且每一次保存都会消耗一..原创 2020-10-10 15:32:34 · 145 阅读 · 0 评论 -
C#设计模式:15.观察者模式 u3d学习总结笔记本
观察者模式(Observer Pattern)当一个对象被修改时,则会自动通知依赖它的对象。使得每当一个对象改变状态,则所有依赖它的对象都会得到通知并自动更新。观察者模式属于行为型模式。一个对象状态改变给其他对象通知的问题,而且要考虑到易用和低耦合,保证高度的协作。优点:1、观察者和被观察者是抽象耦合的。2、建立一套触发机制。缺点:1、如果一个被观察者对象有很多的直接和间接的观察者的话,将所有的观察者都通知到会花费很多时间。2、如果在观察者和观察目标之间有循环..原创 2020-07-31 18:15:23 · 240 阅读 · 0 评论 -
C#设计模式:14.责任链模式 u3d学习总结笔记本
责任链模式(Chain of Responsibility Pattern)原创 2020-07-25 14:30:13 · 211 阅读 · 0 评论 -
C#设计模式:13.命令模式 u3d学习总结笔记本
命令模式(CommandPattern)命令模式属于对象的行为型模式。命令模式是把一个操作或者行为抽象为一个对象中,通过对命令的抽象化来使得发出命令的责任和执行命令的责任分隔开。系统需要支持命令的撤销(Undo)操作和恢复(Redo)操作,也可以考虑使用命令模式,命令模式的实现可以提供命令的撤销和恢复功能。优点:解除了请求者与实现者之间的耦合,降低了系统的耦合度。 对请求排队或记录请求日志,支持撤销操作。 可以容易地设计一个组合命令。 新命令可以容易地加入到系统中。缺点:因为针.原创 2020-07-22 14:35:29 · 215 阅读 · 0 评论 -
C#设计模式:12.组合模式 u3d学习总结笔记本
组合模式(Composite Pattern)组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。这种模式创建了一个包含自己对象组的类。该类提供了修改相同对象组的方式。在软件开发中我们经常会遇到处理部分与整体的情况,如我们经常见到的树形菜单,一个菜单项的子节点可以指向具体的内容,也可以是子菜单。类似的情况还有文件夹,文件夹的下级可以是文件夹也可以是文件。组合模式可以很好地解决这类问题,组合模式通过让树形结构的叶子节点和树枝节点原创 2020-07-21 10:50:48 · 263 阅读 · 0 评论 -
C#设计模式:11.享元模式 u3d学习总结笔记本
享元模式(Flyweight Pattern) 当对象数量太多时,将导致运行代价过高,带来性能下降,内存溢出等问题。为了解决这一问题便诞生了享元模式。把其中具有相同的部分抽象出来,如果有相同的业务请求,直接返回在内存中已有的对象,避免重新创建。在实际使用中,能够共享的内部状态是有限的,因此享元对象一般都设计为较小的对象,它所包含的内部状态较少,这种对象也成为细粒度对象。使用场景:当频繁地从数据源读取数据时,读出的内容存在重复,那么需要使用享元模式(Flyweigh...原创 2020-07-20 15:21:14 · 164 阅读 · 0 评论 -
C#设计模式:10.建造者模式 u3d学习总结笔记本
建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。建造者模式更加关注与零件装配的顺序。产品不需要抽象类,由于建造模式的创建出来的最终产品可能差异很大,所以不大可能提炼出一个抽象产品类。由于建造者隐藏了具体产品的组装过程,所以要改变一个产品的内部表示,只需要再实现一个具体的建造者就...原创 2020-06-09 18:25:21 · 260 阅读 · 0 评论 -
C#设计模式:9.工厂模式 u3d学习总结笔记本
工厂模式是用工厂方法代替new操作的一种模式。工厂方法封装了多个相关联类的new方法,每次实例化这些类的时候不需要new多次,只需要调用工厂类的对应方法即可实例化这些类,并且是通过使用一个共同的接口来指向新创建的对象。目录1.简单工厂(SimpleFactoryPattern)2.工厂方法(Factory Pattern)3.抽象工厂(Abstract Factory Pattern)1.简单工厂(SimpleFactoryPattern)简单工厂模式是类的创...原创 2020-05-30 17:52:16 · 428 阅读 · 1 评论 -
C#设计模式:8.有限状态机模式 u3d学习总结笔记本
有限状态机(Finite-state machine, FSM)—— 简称状态机所谓有限状态机就是决定我们游戏对象的当前状态和状态间的切换,状态机最终只能指向一个结果,由这个结果指向这个状态的行为,也就是执行的函数。一,状态模式是具体的,针对每个需求有一个状态集,并为其实现特有的迁移机制。状态机是抽象的,不是针对特定的需求,而是对各种与相关的问题的进一步抽象,那么用状态机回头去实现状态模式的时候,只需要关注问题本身,而不用去关心如何实现,也就是说你只需要绘制出状态迁移图,状态机就能帮你...原创 2020-05-29 17:05:39 · 993 阅读 · 0 评论 -
C#设计模式:7.模板方法模式 u3d学习总结笔记本
模板方法 (Template Method )模板方法模式是基于继承的代码复用基本技术,在模板方法模式中,可以将相同的代码放在父类中,而将不同的方法实现放在不同的子类中。把公共的内容提取到模板中,只留下部分让用户来填写。在软件系统中,将多个类的共有内容提取到一个模板中的思想便是模板方法模式的思想。定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。...原创 2020-05-19 17:29:18 · 235 阅读 · 0 评论 -
C#设计模式:6.策略模式 u3d学习总结笔记本
策略模式(Strategy Pattern)策略模式是对算法的包装,是把使用算法的责任和算法本身分割开来,委派给不同的对象管理。策略模式通常把一个系列的算法包装到一系列的策略类里面,作为一个抽象策略类的子类。定义算法集合,分别封装起来,让它们之间可以互相替换。模式类型:行为类模式。结构图:这个模式涉及到三个角色:环境(Context):持有一个Strategy类的引用。抽象策略(Strategy):这是一个抽象角色,通常由一个接口或抽象类...原创 2020-05-18 16:29:22 · 242 阅读 · 0 评论 -
C#设计模式:5.桥接模式 u3d学习总结笔记本
桥接模式(Bridge Pattern)桥接模式是将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(Interfce)模式。...原创 2020-05-11 14:09:22 · 249 阅读 · 0 评论 -
C#设计模式:4.中介者模式 u3d学习总结笔记本
中介者模式(Mediator Pattern)中介者模式属于行为型模式,它包装了一系列对象相互作用的方式,使得这些对象不必相互明显作用,从而使它们可以松散耦合。当某些对象之间的作用发生改变时,不会立即影响其他的一些对象之间的作用,保证这些作用可以彼此独立的变化。现应用最为广泛的是网络聊天室。主要解决:将多个对象间复杂的关联关系解耦,Mediator模式将多个对象间的控制逻辑...原创 2020-05-05 14:07:07 · 234 阅读 · 0 评论 -
C#设计原则:7.迪米特法则 u3d学习总结笔记本
迪米特法则(LOD)Law of Demeter,简称:LOD。一个对象应该对其他对象保持最少的了解,使得系统功能模块相对独立,这样当一个模块修改时,影响的模块就会越少,扩展起来更加容易。又叫最少知道原则问题由来:类与类之间的关系越密切,耦合度越大,当一个类发生改变时,对另一个类的影响也越大。解决方案:尽量降低类与类之间的耦合。图片例子:...原创 2020-04-17 17:41:12 · 258 阅读 · 0 评论 -
C#设计原则:6.合成复用原则 u3d学习总结笔记本
合成复用原则(CRP)(Composite Reuse Principle,CRP)它要求在软件复用时,要尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现。如果要使用继承关系,则必须严格遵循里氏替换原则。合成复用原则同里氏替换原则相辅相成的,两者都是开闭原则的具体实现规范。继承复用破坏了类的封装性。因为继承会将父类的实现细节暴露给子类,父类对子类是透明...原创 2020-04-17 16:56:51 · 469 阅读 · 0 评论 -
C#设计原则:5.接口隔离原则 u3d学习总结笔记本
接口隔离原则(ISP)Interface Segregation Principe,简称:ISP。类的依赖关系应建立在最小接口上,不要都塞在一起。高层类不需要多余的接口。问题由来:写工具的时候,总会有考虑不全面的情况,例如根据单一职责原则把相关功能接口都综合集中在了一个类里面。然后导致在使用时,发现很多功能只会使用其中一个,其余功能完全是多余的。解决方案:...原创 2020-04-16 16:02:39 · 180 阅读 · 0 评论 -
C#设计原则:4.单一职责原则 u3d学习总结笔记本
单一职责原则 SRP:Single Reponsibility Principle,简称:SRP一个类只负责一项职责。就一个类而言,应该只有一个引起它变化的原因。问题由来:解决方案:...原创 2020-04-16 14:33:30 · 219 阅读 · 0 评论 -
C#设计原则:3.里氏替换原则 u3d学习总结笔记本
氏替换原则 (LSP):Liskov Substitution Principle,简称:LSP。所有使用基类的地方,都可以使用其子类来代替,而且行为不会有任何变化原创 2020-04-15 18:16:02 · 238 阅读 · 0 评论 -
C#设计原则:2.依赖倒置原则 u3d学习总结笔记本
依赖倒置原则(DIP)Dependence Inversion Principle,简称:DIP。高层模块不应该依赖低层模块,两者都应该依赖其抽象,不要依赖细节原创 2020-04-14 15:07:40 · 269 阅读 · 0 评论 -
C#设计原则:1.开闭原则 u3d学习总结笔记本
开闭原则(OCP):Open Closed Principle,简称:OCP软件实体应当对扩展开放,对修改封闭问题由来:程序因为更新升级等原因,需要对原程序进行代码修改添加,可能会给旧代码中引入错误,也可能会使我们不得不对整个功能进行重构,并且需要原有代码经过重新测试。解决方案:当软件需要变化时,尽量通过扩展程序实体的行为来实现变化,而不是通过修改已有的代码来实现变化。...原创 2020-04-13 17:39:26 · 410 阅读 · 1 评论 -
C#设计模式:3.单例模式 u3d学习总结笔记本
单例模式,简单说就是类的实例在内存中只存在一份为什么要使用单例模式在我们的整个游戏生命周期当中,有很多对象从始至终有且只有一个。这个唯一的实例只需要生成一次,并且直到游戏结束才需要销毁。 单例模式一般应用于管理器类,或者是一些需要持久化存在的对象。 例如全局分数管理器什么的,需要全场存在,又只存在一个。//===================================...原创 2019-02-24 00:25:30 · 233 阅读 · 0 评论 -
C#设计模式:2.外观模式 u3d学习总结笔记本
外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用。//==========================================意图:为子系统中的一组接口...原创 2019-02-23 23:52:50 · 195 阅读 · 0 评论 -
C#设计模式:1.状态模式 u3d学习总结笔记本
1.状态模式允许一个对象在其内部状态改变时改变它的行为,使对象看起来似乎修改了它的类。2.在软件开发过程中,应用程序可能会根据不同的情况作出不同的处理。最直接的解决方案是将这些所有可能发生的情况全都考虑到,然后使用(if else(或switch case)语句来做状态判断来进行不同情况的处理。但是编程中如果一个方法中有很多判断就是坏味道了。假如我有10个、100个状态,如果还是用(if ...原创 2019-01-27 16:36:22 · 245 阅读 · 0 评论