设计模式 - Unity
文章平均质量分 79
介绍一些设计模式在 Unity 中实现
有趣就行
胜败乃兵家常事 大侠请重新来过
展开
-
游戏对象池模式(Unity)
(说明部分后面会写,这里先展示实现)原创 2022-10-14 20:34:30 · 546 阅读 · 0 评论 -
行为型模式总结
通过双接口形式,实现不同对象间的访问权限不同,使得可以保存对象的快照,且不用担心其他对象的修改和使用。但由于备忘录模式的快照,可以使用其他技术来完成,如序列化等,且更为直观简单,所以并不常用。观察者模式对订阅事件的对象,可以进行及时的通知,且这样的订阅是以动态的方式。通过中介者类来进行对各个对象的交互管理,使得各个对象相互独立,不在大量依赖各种对象,而是跟中介者交互,简化了交互的复杂性,降低耦合。将调用者和实现者请求参数化成命令对象,通过对命令对象的管理和调用,来灵活的对请求进行处理。...原创 2022-07-16 11:14:16 · 146 阅读 · 0 评论 -
备忘录模式 - Unity
在许多游戏里,我们都会有存档功能,在存档过程中进行状态保存。还有许多的软件都有撤销功能,除了对命令的储存,还有对当前状态的保存。备忘录模式是对象行为型模式,也称快照模式,在不破坏封装性的前提下,捕获一个对象状态并保存,而且可以在需要的时候,进行还原。实现状态保存并不难,但我们需要对保存对象的字段进行保护的前提下,还可以对其进行保存。这里使用双接口的形式来完成对不同类的访问。使用的是SteamAssets文件夹。我们可以使用两个接口来实现双接口操作。在不支持嵌套类的语言中。通过两个按钮进行测试。...原创 2022-07-15 11:28:30 · 624 阅读 · 0 评论 -
访问者模式 - Unity
访问者模式是对象行为型模式,将某中数据类型中的元素分离封装成类,在不改变原本的数据结构的情况下可以添加作用于这些元素的新的操作,为数据结构的每个元素提供多个访问方式。它在不改变原数据结构的情况下,为类扩展了方法。访问者模式将新的类的行为,放入了一个名叫访问者的类中,而不是去添加到原有的类中。这样的交互方式不仅没有对原有的类造成污染,还实现了我们需要添加的方法。说明抽象访问者具体访问者抽象元素具体元素对象结构调用端访问者模式通过两次分派,一次动态分派和一次静态分派,来实现了伪动态分派的效果。优点原创 2022-07-12 10:53:12 · 215 阅读 · 0 评论 -
迭代器模式 - Unity
迭代器模式是对象行为型模式,它提供一个对象来顺序访问聚合对象中的元素(遍历元素的算法),且不暴露底层实现。集合是编程中非常常见的数据结构之一。对于不同数据类型所需要的不同的遍历方式。但大多数客户端并不关心数据存储的方式。所以由于集合的遍历方式的不同,我们需要将集合遍历的算法,从集合中抽取出来,而抽取的部分,就是迭代器。迭代器通常会提供获取集合元素的基本方法。客户端通过不断调用此方法,直至遍历结束。在 C# 中 就是对于迭代器遍历元素的具体实现。foreach 需要集合类继承 接口, 只有一个方法就是返回原创 2022-07-10 16:43:23 · 815 阅读 · 0 评论 -
中介者模式 - Unity
中介者模式是对象行为型模式,它通过将一系列对象之间的交互进行封装,使得之前混乱无需的网状的依赖关系,变成一种星状的依赖关系,使得每个对象之间可以独立的改变它们的交互。中介者模式也是迪米特法则的经典运用。在现实生活中,这样的运用非常常见,如聊天时,信息需要经过服务器,此时服务器就是一个中介者。GUI元素的大量交互也是通过控制器去完成的,而控制器就是一个中介者。中介者模式将原本互相依赖的对象,相互独立,它们之间的交互需要强行使用中介者来进行,从而保证对象的独立,降低耦合。中介者模式将多个对象的网状关系网封装,从原创 2022-07-09 14:59:03 · 451 阅读 · 0 评论 -
观察者模式 - Unity
观察者模式是对象行为型模式,使用订阅制模式,当发送者状态发生改变时,它可以向订阅者发出通知并使得订阅者进行更新。观察者模式非常常见,如微信公众号,平台消息等,都算是观察者模式的行为,C# 中 event 事件就是一种观察者模式。观察者模式非常常用,主要是针对一对多的单向连接,这种动态的订阅和取消订阅的方式,来轻松建立连接。说明观察者接口观察者对象(通知时,变为青色)抽象按钮(抽象主题)发送者(具体主题)客户端添加对象优点缺点...原创 2022-07-07 19:13:33 · 905 阅读 · 0 评论 -
状态模式 - Unity(有限状态机)
状态模式是一种对象型模式,他将复杂的逻辑判断提取到不同状态对象中,允许状态对象在其内部状态发生改变时,改变其行为。状态的改变和各个状态的行为是状态模式的核心。这里模式就需要谈到一个游戏中经常使用的状态模式的形式。它就是有限状态机,有限状态机是作为对象不同状态的管理而使用的(游戏AI也经常使用有限状态机)。其主要思想是程序在任意时刻仅可处在有限的几个状态中。在任意状态中,程序行为将随状态的改变,发生改变。而状态和状态之间的切换都是预先设计好的。说明这里将实现一个有限状态机,状态机分为四个部分为了方便考虑,我只原创 2022-07-03 20:57:24 · 8685 阅读 · 9 评论 -
责任链模式 - Unity
责任链模式是对象行为型模式,该模式中请求者发送的请求需要沿着处理者链进行传递,并被处理者处理,这样可以避免请求发送者与多个处理者耦合。责任链中,将处理请求的行为独立成对象,通过链的结构将所有行为串联起来。这样的结构十分常见,如银行的业务处理流程,公司采购流程等,它们都是属于这样的结构。还有一种更为常见的形式,就是处理者在接受请求时,可以决定是否处理或交给下一个处理者处理,所有每个请求者最多有一个处理者进行处理,要么就没有处理者处理。说明根据怒气值来释放不同的技能。技能枚举处理者接口基础处理者技能处理者原创 2022-06-24 23:28:49 · 527 阅读 · 0 评论 -
命令模式 - Unity
命令模式是对象行为型模式,通过将请求者和执行者之间的请求抽离出来封装成一个对象,从而使发出请求的职责和执行请求的职责分离。请求者和执行者通过命令对象来进行沟通,这样使得对命令对象进行存储,管理,传递等。命令模式是行为型模式中十分常用的模式,在游戏开发中也十分重要。通过将大量的命令进行管理和存储,保证了命令的顺序和统一。在使用软件时,我们经常会用到撤销这个操作,软件是如何执行撤销的,显然是将你的每一步操作进行保存,通过读取每步操作进行还原。而这就是命令模式,其中每步操作就是一个命令。例如,遥控器和电视机,遥控原创 2022-06-20 22:18:43 · 901 阅读 · 0 评论 -
策略模式 - Unity
策略模式是一种对象行为型模式。该模式定义一系列算法,将其封装起来,使这些算法在完成特定任务时,可以相互替换。 通过一个情景类,将其算法实现和业务逻辑分离,动态的切换不同的算法进行管理。策略模式在生活中也十分常见,如出行的方式,当需要到达一个目的地时,我们需要一个方式去实现,骑车,坐公交等,它们都是实现了同一个任务,但实现的方式截然不同。在程序中,排序是非常常见的,不同的排序方式有不同的特定(如快排,归排,堆排等),通过不同的场景,我们可以灵活的选择这些排序。说明例子:场景切换(Scene Switchin原创 2022-06-09 23:25:00 · 612 阅读 · 0 评论 -
模板方法模式 - Unity
模板方法模式是一种类行为型模式原创 2022-06-03 17:44:35 · 405 阅读 · 0 评论 -
结构型模式总结
结构型模式结构型模式是为了将类与类之间组合,使其具有一定的功能,同时在交互上也可以比较顺畅。结构型模式分为两种类结构型模式对象结构型模式类结构型模式:主要是通过继承的方式,来完成类之间的交互对象结构型模式:主要是通过聚合或组合的方式,来完成类之间的交互结构型模式种类有适配器模式桥接模式装饰模式代理模式外观模式组合模式享元模式除了类适配器模式是类结构型模式,其他结构型模式都属于对象结构型模式。适配器模式关键:接口转换,解决兼容性问题适配器模式分为两种 类适配器原创 2022-05-31 16:54:21 · 293 阅读 · 0 评论 -
享元模式 - Unity
文章目录享元模式结构实现应用场景利与弊享元模式享元模式是对象结构型模式,此模式为了处理大量的细粒度对象所导致的内存不足的解决方案。它通过运用共享技术来支持大量细粒度对象的复用,它通过共享已经存在的对象来大幅减少需要创建的对象数量(主要是内部状态的数量),从而避免大量的相似类的开销。其中线程池,字符串池等,是最为常见的运用。在游戏开发中,我们需要对游戏中大量的对象的创建进行复用,其中包括粒子,模型等,大多数都是通过享元模式。这个模式对于游戏开发十分重要。结构说明抽象享元(Flyweight)-原创 2022-05-31 15:00:38 · 609 阅读 · 0 评论 -
组合模式 - Unity
文章目录组合模式结构组合模式组合模式是对象结构型模式,用于表示 “整体 - 部分” 关系,使用户对单一对象和组合对象访问具有一致性。组合模式关注点在于解决树状结构中,容器和单一对象的统一访问性,让客户端无需关系是那种类型,把它们当作一种东西使用。这样的结构非常常见,如文件和文件夹,UI元素和UI容器等。使用组合模式看结构是否为树状,且是否可以分为单一元素和组合元素。结构...原创 2022-05-27 22:51:47 · 646 阅读 · 0 评论 -
外观模式 - Unity
文章目录外观模式结构实现应用场景利与弊外观模式外观模式是对象结构型模式,也叫门面模式,负责为多个复杂系统提供一个对外一致的接口,使得这些子系统可以更容易本人使用,同时也隔绝了客户端的直接调用,对于复杂系统来说,使用者没有深入了解这些系统,随意调用容易造成错误。通过外观模式将这些子系统的功能进行封装,从而可以使客户端简单的使用。绝大多数框架和软件都会进行外观模式的封装,使用户不会看到内部的实现,只留一些常用的按钮或接口提供给开发者或使用者。即减少使用者对子系统学习的成本,也避免了因为使用不当,而造成的错原创 2022-05-25 15:20:21 · 268 阅读 · 0 评论 -
代理模式 - Unity
文章目录代理模式结构实现代理模式代理模式是对象结构型模式,主要是对对象的访问控制,处理对象的生命周期,也可以记录客户端的调用等。在很多时候,我们使用的类的访问都是随意的,调用端可以随意调用我们的类,同时也无法检查有多少客户端真正使用这个类的对象。对于一些比较重的类,我们不是实时调用的化,无需立马创建。这些问题,我们都可以使用代理模式进行很好的处理,代理模式就是对原有类的对象,进行访问控制,且可以对对象生命周期做调控,还可以记录日志和延时创建所需类。通过代理实现这些功能十分方便。结构说明抽象原创 2022-05-24 16:32:48 · 504 阅读 · 0 评论 -
装饰模式 - Unity
文章目录装饰模式结构实现应用场景利与弊装饰模式装饰模式是对象结构型模式,指在原来的对象上添加行为,且不改变对象的结构的模式。装饰模式旨在解决组合搭配问题,同时不影响原有的对象类。如饭店中饭,汤,菜的组合,使用继承扩展的话,明显会出现类爆炸的现象,饭作为主要,汤和菜则是搭配,这样的组合。搭配组合如 饭,饭 + 汤,饭 + 菜等。使用装饰模式就可以轻松解决这个问题。结构说明部件(Component)- 规范部件和装饰类的行为具体部件(Concrete Component)- 实现部件行为,但本原创 2022-05-22 21:11:46 · 518 阅读 · 0 评论 -
桥接模式 - Unity
文章目录桥接模式结构实现应用场景利与弊桥接模式桥接模式是一种对象结构性模式,作用是在复杂或多维度的对象中,将抽象和实现分离,用聚合或组合的方式替代继承来实现,从而降低抽象和实现多个可变维度的耦合度。我们生活中有很多例子,如遥控器和电视机,遥控器是抽象维度,电视机是实现维度。使用者只需关注抽象维度即可。也有将对象分为两种或多种组合式的维度,如物体和颜色,紫色的正方形,蓝色的圆形等,物体是一个维度,颜色是一个维度。结构说明抽象化(Abstraction)- 提供高层控制逻辑,其操作依赖于实现化。原创 2022-05-20 13:55:56 · 302 阅读 · 0 评论 -
适配器模式 - Unity
文章目录适配器模式结构实现 - Unity类适配器对象适配器应用场景利与弊适配器模式适配器模式是一种结构型模式,它可以时原本不兼容的接口,互相工作。比方说,生活中常见的数据线转接口,由于插口不同,有的ios,有的type-c,但使用一样,所以我们可以使用适配器。适配器模式主要是通过创建适配器类,作用是能够转换对象接口,使其互相交互。将复杂的转换过程封装到适配器类中。适配器不仅可以将不同接口的对象相互合作,也可以用来转换不同格式的数据。结构这里有两种结构表示类适配器 - 通过继承的方式对象适原创 2022-05-17 16:12:21 · 609 阅读 · 0 评论 -
创建型模式比较
五大创建型模式单例模式工厂方法模式抽象工厂模式原型模式生成器模式创建型模式的特点封装创建细节,使产品的创建与功能分离,代码无需关系对象创建细节,降低代码耦合。单例模式特点类的唯一性,独一无二拥有全局访问点对一些需要频繁创建的类或只需要一个实例的类来说,非常有用,保证了实例的唯一性。工厂方法模式特点针对一种产品(接口相同)的创建创建和实现分离,封装创建细节对于一些需要频繁扩展的产品,我们可以使用工厂方法模式。抽象工厂模式特点针对一系列相关产品的创建创建和原创 2022-05-13 15:13:55 · 196 阅读 · 0 评论 -
生成器模式 - Unity
文章目录生成器模式结构实现 - Unity不使用主管类使用主管类应用场景利与弊生成器模式生成器模式是开发中非常常用的设计模式,也被称作建造者模式,它可以分步骤的去创建产品,根据产品的组合不同,去创建不同形式的产品。这对于一些非常复杂,或需要配置文件的复杂产品,十分好用。这就好比生产汽车,汽车有许多的配件,不同的配件就会产生不同的汽车类型。如果创建一辆汽车,就需要它的所有配件,创建起来非常复杂。我们就可以使用生成器模式,将这些配件的安装,分布完成,从而降低了创建类的复杂度。结构说明:创建者类原创 2022-05-12 15:15:50 · 1086 阅读 · 0 评论 -
原型模式 - Unity
文章目录原型模式结构实现 - Unity浅拷贝深拷贝 - 手动深拷贝深拷贝 - Json序列化应用场景利于弊原型模式原型模式能够让你复制已有的对象(字段复制),且不会使代码产生依赖的类。原型模式说白了就是克隆,让你可以克隆你想克隆的类。这种克隆是动态的,是根据现有的模板克隆的,属性是完全一致的。结构说明定义一个克隆的接口,这个接口通常只有一个Clone()抽象方法,需要克隆的对象只需实现这个接口即可。C# 内部已有这个接口,无需重新创建。这个接口为ICloneable,实现方法Clone(原创 2022-05-08 17:44:15 · 856 阅读 · 0 评论 -
三种工厂模式的比较
三种工厂模式简单工厂模式工厂方法模式抽象工厂模式这三种模式许多人容易混淆,但它们三兄弟的用法有很大区别简单工厂简单工厂也称静态工厂(创建产品方法为静态),此工厂可以生产多种不同的产品,通过传入的参数不同,来创建产品的不同类型,相当于超级工厂,各自东西都可以生产。缺点也很明显,如果多个产品的创建,会导致类的臃肿,不符合单一职责原则,且难维护,因为每次增加产品都必须去修改工厂类内部代码,不满足开闭原则。优点是方便书写,可用来做少量产品的创建。工厂方法工厂方法通过抽象工厂接口,让子工厂来创原创 2022-05-06 15:55:38 · 615 阅读 · 0 评论 -
抽象工厂模式 - Unity
文章目录抽象工厂模式结构实现 - Unity应用场景利与弊抽象工厂模式抽象工厂模式能创建一系列相关的产品,而无需指定具体类。抽象工厂所生产的不是某一类产品,而是一系列,相当于一个组合套装,这些产品是捆绑的。比方说,买装台式机,我们可以选择 显卡,CPU,主板,内存条等。他们是一系列相关产品。买一套衣服,一般都是上衣和裤子,作为一套直接卖,裤子和上衣就是相关的系列产品。所以,我们需要有一个初步概念,抽象工厂只生产一系列相关的产品,而非一种,如果想只生产一种的话,应该使用工厂方法模式。结构抽原创 2022-05-06 15:35:11 · 762 阅读 · 0 评论 -
工厂方法模式 - Unity
文章目录工厂方法模式结构实现 - Unity应用场景利与弊工厂方法模式工厂方法模式是工厂模式的一种,此模式提供一个工厂接口,通过其子类实现,来创建相对应的产品。工厂模式相当于小型作坊,只生产一种类型的商品,客户只需记住作坊的名称即可,无需知晓产品的名称,通过产品接口来实现产品的功能。结构#mermaid-svg-YvOYMgOPhyNJirsl {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333原创 2022-05-04 15:41:10 · 1216 阅读 · 0 评论 -
简单工厂模式 - Unity
文章目录简单工厂模式结构实现 - Unity利与弊简单工厂模式工厂模式分为三种简单工厂工厂方法抽象工厂简单工厂模式是这三种中最简单的,也是后两种的基础。简单工厂模式不在 GoF 那 23 种设计模式当中工厂模式定义:建立一个创建产品的工厂接口,通过工厂来进行相关产品的创建,从而达到 创建和实现分离 的目的。其中简单工厂模式也被称为静态工厂。主要原因就是它提供了一个静态的创建接口。结构简单工厂结构:#mermaid-svg-AidCm1zqDu10mUYa {font-fami原创 2022-05-01 16:36:14 · 1067 阅读 · 0 评论 -
单例模式 - Unity
文章目录单例设计模式类的结构实现方法 - Unity中的实现饿汉模式懒汉模式(线程安全)泛型单例基类 - Unity脚本组件单例单例设计模式单例模式是指一个类只有一个实例,且提供一个全局访问的属性,访问此单例。单例模式是我们设计模式中用的最多的一个设计模式之一。它非常普遍,也十分简单,实现也十分容易。类的结构#mermaid-svg-zDc5VkDRmJ7W9PJd {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16p原创 2022-04-27 14:09:05 · 1620 阅读 · 0 评论