设计模式
文章平均质量分 92
彩色墨水
一个转行Unity开发选手如何从小白走向大佬之路,敬请期待...
展开
-
大话设计模式:访问者模式
一、什么是访问者模式数据结构与数据算法分离一组固定的数据结构,具备不同的数据状态,将状态封装多继承,用数据状态去访问数据结构,使用双分发,做出反应.数据结构是固定的,数据算法是多变的,可以灵活增加算法.稳定的数据结构和易变的操作耦合问题。UML图二、适用场景对象结构比较稳定,但经常需要在此对象结构上定义新的操作。需要对一个对象结构中的对象进行很多不同的并且不相关的操作,而需要避免这...原创 2019-12-26 16:15:38 · 286 阅读 · 0 评论 -
大话设计模式:解释器模式
一、什么是解释器模式定义一个语言,定义一个解析器,解析器解释语言某种繁复的输入可有一定规律抽象为行为,定义语言,使用解释器将这些语言转换为行为,解释器模式提供了评估语言的语法或表达式的方式。这种模式实现了一个表达式接口,该接口解释一个特定的上下文。UML图AbstractExpression: 抽象表达式,定义一个抽象方法接收输入TerminalExpression: 实现与文法中...原创 2019-12-25 18:14:18 · 167 阅读 · 0 评论 -
大话设计模式:享元模式
一、什么是享元模式使用共享对象可有效地支持大量的细粒度的对象主要用于减少创建对象,以减少内存占用和提高性能。是对象池的一种实现,避免不停地创建对象销毁对象,把对象状态分为内部状态和外部状态,内部状态是共享不变的,外部状态是可改变的。UML图Flyweight: 是所有的具体享元类的基类,为具体享元规范需要实现的公共接口,非享元的外部状态以参数的形式通过方法传入。ConcreteFl...原创 2019-12-24 18:26:27 · 185 阅读 · 0 评论 -
大话设计模式:中介模式
一、什么是中介模式封装一组对象的耦合交互像是一个调停者,将大家的意见聚拢到一起,然后统一安排。解除对象之间复杂的耦合,允许他们独立变化。UML图Mediator:抽象中介类,有一个处理交互的方法ConcreteMediator: 具体中介类,持有所有同事类,并根据情况来发布消息Colleague: 抽象同事类,需要确定中介是谁ConcreteColleagueA:具体同事类,具...原创 2019-12-24 15:07:14 · 135 阅读 · 0 评论 -
大话设计模式:职责链模式
一、什么是职责链模式使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系.将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止.当客户提交一个请求时,请求是沿链传递直至有一个职责负责处理它.职责单一不彼依赖,处理完并自动转移.职责模式每个单链不必知道下一个链是谁,这些由环境设定.UML图Handler: 操作类,设置下一个职责的方法,和一个当前处理...原创 2019-12-23 14:58:19 · 164 阅读 · 0 评论 -
大话设计模式:命令模式
一、什么是命令略模式请求对象化,,以便可记录可撤销将一个请求封装为一个对象,从而使你可以用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。将请求包装进命令中,并传给调用对象,调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。UML图Receiver接收器类,里面包含执行方法,等待命令类调用.Command:命令类,有一个...原创 2019-12-21 18:32:45 · 177 阅读 · 0 评论 -
大话设计模式:桥接模式
一、什么是桥接模式将抽象部分和实现部分分隔开,使都可以独立变化关键在于分隔变化维度,将不同的维度分隔开,然后组合聚合,抽象与实现脱耦。UML图IMplementor:实现功能类之后会与抽象主题组合聚合ConcreteMplementorA: 具体实现功能类AAbstraction:抽象类,定义主体二、适用场景存在多维度描述对象的情况,可以使用桥接模式,比如 蜡笔可以分为大中小...原创 2019-12-20 17:16:05 · 212 阅读 · 0 评论 -
大话设计模式:单例模式
一、什么是单例模式一个类保证只有一个实例对象,并提供一个访问它的全局访问点通常我们可以有一个变量可以让 类被全局访问,但不可避免被实例出多个对象,让类自身管理这个实例过程,使得实例只存在一个,且提供一个全局访问的 方法。UML图私有一个 自身的实例,私有构造函数,公开一个获得唯一实例的方法。二、适用场景1、要求生产唯一序列号。2、游戏管理器只需要一个。大家用的话都是用的它。3...原创 2019-12-20 16:14:41 · 198 阅读 · 0 评论 -
大话设计模式:迭代器模式
一、什么是迭代器模式按照一定顺序对元素进行遍历容器与迭代分开。提供一种方法按照一定顺序访问一个集合里面的元素,而又不暴露集合内部的细节.迭代器一般有起始点/下一个点/是否还有元素这几个方法.分离了集合对象的遍历行为,抽象出一个迭代器类来负责,既可以不暴露集合的内部结构,又可以让外部代码透明地访问集合内部数据.UML图Iterator: 迭代器抽象类,凡是迭代器应该具备这些操作功能,当...原创 2019-12-19 20:35:12 · 210 阅读 · 0 评论 -
大话设计模式:备忘录模式
一、什么是备忘录模式在不破坏对象内部状态的情况,捕获状态,并在外部保存该状态保存一个对象的某一状态,以便在适当的时候恢复对象,这样对象就能恢复到之前的状态了。提供了可以恢复状态的机制,发起人可以让其恢复到某个历史状态。UML图Originator:发起人类,到时候需要存储它的不同状态,里面有一个存储状态方法和一个 恢复状态方法Memento:备忘录,里面就是一堆数据,发起人类需要存...原创 2019-12-18 15:45:08 · 250 阅读 · 0 评论 -
大话设计模式:适配器模式
一、什么是适配器模式将源对象的接口包装成需要的接口 我们通过一个适配器类,将原先不兼容的类封装进这适配器类,并暴露一个外接统一的接口以备调用。可以让原本不兼容的两个类协同工作。UML图Target: 定义的目标类或接口,里面有一个统一的接口名,方便外界调取Adapter: 继承Target,获得统一接口名方法,持有需要被适配的对象,被适配对象的接口方法放到统一接口名方法.Ada...原创 2019-12-18 12:18:38 · 213 阅读 · 0 评论 -
大话设计模式:状态模式
一、什么是状态模式某个行为需要根据不同条件做出反应,将这些条件划分到状态类对象的行为依赖于它的状态(属性),并且可以根据它的状态改变而改变它的相关行为。代码中包含大量与对象状态有关的条件语句。当一个对象状态的条件判断表达式过于复杂,可以将状态的判断逻辑转移到一系列状态类,可以把复杂的判断逻辑简化。UML图State: 状态抽象类,提供一个状态转换的接口StateA、StateB、S...原创 2019-12-17 15:07:54 · 233 阅读 · 0 评论 -
大话设计模式:抽象工厂模式
一、什么是抽象工厂模式提供一个接口创建一组或一系列相关或互相依赖的对象抽象工厂主要是针对种类繁多,需要一系列的对象组合的情况,而每次只需要实例其中的一组系列。是工厂模式的升级,进一步抽象,工厂模式只能生产一个等级的产品,而抽象工厂能生产多个等级的一个系列的产品。UML图二、适用场景三、优缺点优点缺点四、大话中的例子五、我的例子运行结果PS:...原创 2019-12-16 18:28:04 · 243 阅读 · 0 评论 -
大话设计模式:观察者模式
一、什么是观察者模式一对多的依赖关系,多个观察者同时监听一个通知者当一个对象被修改时,通知它的依赖对象,使得它们能够自己更新自己。也就是说大家都很关心一件事,当这件事发生的时候自己要办点啥事。其实项目中哪些对象关心啥是不清楚的,应该倒过来考虑,有一个事件是可能许多对象都要监测的,那这个事件就是大家关心的事件,谁要关心,就把谁关联上。UML图Subject:通知者抽象类,负责添加和删除...原创 2019-12-13 16:27:30 · 180 阅读 · 0 评论 -
大话设计模式:建造者模式
一、什么是建造者模式将建造过程与表示分离建造者模式可以让相同的建造过程有不同的具体表现,把建造的流程隐藏,外界只需要告知建造对象的类型.整个建造者的组成部分有哪些是固定的,具体该如何实现这些不部分,可以不同.UML图Build: 负责规定建造对象所需要的组成部分,使用抽象方法,缺一不.ConcreteBuild:建造者的具体实现类,各个组成部分具体是实现什么在这里确定Produc...原创 2019-12-12 17:18:54 · 157 阅读 · 0 评论 -
大话设计模式:外观模式
一、什么是外观模式为子系统中的一组接口提供一个一致的界面用一个高层接口,统一了一组底层接口,和外界交互更加方便,外部应用程序不需要关心内部子系统的具体细节,大大降低程序的复杂度,提高程序可维护性.UML图Facade:外观类,负责将子系统的功能接口统一到一个接口SubsysytemA : 子系统,不与客户端直接联络Client : 只和外观类联络,减少耦合性二、适用场景各种代...原创 2019-12-11 15:54:46 · 187 阅读 · 0 评论 -
大话设计模式:模板方法模式
一、什么是模板方法模式算法骨架的封装使用一个算法骨架,确定算法流程,具体步骤可变化的部分交给子类实现,这样子类就可以不改变算法骨架流程,重定义部分具体步骤的实现.UML图AbstractTemplate:抽象类。用来定义算法骨架和原语操作,在这个类里面,还可以提供算法中通用的实现ConcreteClass:具体实现类。用来实现算法骨架中的某些步骤,完成跟特定子类相关的功能。二、适...原创 2019-12-10 11:48:44 · 163 阅读 · 0 评论 -
大话设计模式:原型模式
一、什么是原型模式给一个原型为类型,拷贝并创建一个新对象原型模式有点像复印机,也有点像卡卡西的拷贝忍术,当然了这个模式下,你期望是完全复制还是,只是浅层复制,这取决于你的需求.在以原型为类型创建一个新的对象时,不需要关心它是怎么创建的.浅复制被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用都仍然指向原来的对象.深复制把引用的变量指向复制过的新对象,而不是原有的被引...原创 2019-12-09 15:57:07 · 273 阅读 · 0 评论 -
大话设计模式:工厂模式
一、什么是工厂模式给一个创建对象的接口,让其子类决定创建哪个具体对象.允许接口创建对象,但使用哪个类来创建对象,则是交由子类决定的。工厂模式像是一个工厂群,工厂A生产A产品,工厂B生产B产品,你有什么东西要生产,我就有什么工厂负责给你生产.UML图二、适用场景多同基类的子类需要生成,比如怪物工厂,野怪A 野怪B等等,他们可以建立一套怪物的对象 类,然后有对应的工厂和具体工厂.在工厂...原创 2019-12-07 15:50:10 · 201 阅读 · 0 评论 -
大话设计模式:代理模式
一、什么是代理模式XXXXXXUML图二、适用场景三、优缺点优点缺点四、大话中的例子五、我的例子运行结果PS:原创 2019-12-06 14:38:14 · 232 阅读 · 0 评论 -
大话设计模式:装饰模式
一、什么是装饰模式给对象动态添加职责装饰模式像是一场大型职责扩展会,在不同的时间你需要具备不同的职责内容,一你可以获得这些职责,二你可以放下这些职责.就增加功能来说,装饰模式比子类更灵活.是为对象已有功能添加一些其他功能的方式.客户端可以有选择的按自己的顺序装饰对象.UML图二、适用场景当一个对象的一些职责或功能不必一直存在,而且是能很灵活的调整的时候,就可以考虑这个装饰模式,比如...原创 2019-12-05 15:58:28 · 214 阅读 · 0 评论 -
大话设计模式:设计原则
六大设计原则总原则 开放-封闭原则单一职责原则依赖倒置原则里氏转换原则隔离接口原则最少知道原则合成复用原则开放封闭原则对扩展开放,对修改关闭一个类写好了就不应该去修改它,要想添加新功能可以进行扩展。我们说对扩展开放,对修改关闭,是只是我们开发过程中的一个行动思想,绝对的开放和封闭是不存在的。在实际开发中设计的模块无论多么的封闭,都会存在一些无法对之封闭的变化。既然不可...原创 2019-12-04 12:26:59 · 172 阅读 · 0 评论 -
大话设计模式:策略模式
一、什么是策略模式对算法的封装定义了算法家族,分别封装起来,让他们之间可以互相替换,让算法的变化,不会影响到使用算法的客户.简单点说就是我把一系列的具有同类型需求的算法按策略装进策略strategy里面,外界调用strategy时就知道我要用哪一种算了.UML图二、适用场景当遇到在不同时间需要针对不同策略进行不同算法时,所得结果又都是同一类型时,就该想到用策略模式.需注意一系列...原创 2019-12-03 12:17:11 · 191 阅读 · 0 评论 -
大话设计模式:简单工厂
一、什么是简单工厂提供创建对象的接口简单工厂并不是GOF23个设计模式中的一种,但它亦有使用价值。简单来说就是一个类型的许多子类,可以通过同一个工厂创建方法按需创建。UML图二、适用场景当隔绝具体实现,想将实例的创建集中管理和控制,让创建者不用关心实例怎么创建的。三、优缺点优点帮助封装。客户端可以更好的面向接口编程。解耦。客户端不需要知道实现类。缺点需要理解参数的意义...原创 2019-12-02 15:21:25 · 170 阅读 · 0 评论