
设计模式
文章平均质量分 50
24种常用设计模式以及在游戏开发中这些设计模式的使用
ht_game
一个游戏开发爱好者,梦想自己创作出一个大家爱玩的游戏,Unity3D软件学习者,游戏开发技术爱好者。我不是大佬,现在依然每天坚持学习不同的新技术,希望与大家不断沟通和交流,分析学习过程中的Unity技术。
展开
-
设计模式六大原则
单一职责原则 定义:就一个类而言,应该仅有一个引起它变化的原因 开发-封闭原则 定义:一个软件实体(类、模块、函数等等)应该可以扩展,但是不可修改。也就是说对扩展开发,对修改关闭 依赖倒转原则 定义:高层模块不应该依赖底层模块,两个都应该依赖抽象。 抽象不应该依赖细节,细节应该依赖抽象 里氏代换原则 定义:子类型必须能够替换它们的父类型 接口隔离原则 定义:使用多个专门的接口,而不使用单一的总接口,即客户端不应该依赖那些它不需要的接口 迪米特法则 定义:一个软件实体应当尽可能少地与其他实体发生相互作用 .原创 2022-02-28 14:49:38 · 115 阅读 · 0 评论 -
设计模式之简单工厂模式
面向对象语言通过封装、继承、多态把程序的耦合度降低,而设计模式就是使得程序更加的灵活,容易修改,并且易于复用。 所以设计模式是程序编程的重要内容。 简单工厂模式,根据参数的不同返回不同类的实例,并且专门定义一个类来创建其他类的实例(也就是工厂类Factory),而被创建的实例通常是同一个类的父类。 结构t图 工厂类(Factory):工厂类生产实例 抽象产品(AbstractProduct):抽象类或接口,用于规定其派生类的具体要求 具体产品(Product):抽象类的派生方法,用于满足抽象类的方法原创 2022-02-27 17:27:25 · 77 阅读 · 0 评论 -
设计模式之适配器模式
当系统的数据和行为都正确,但接口不符时,我们应该考虑使用适配器,目的是使控制范围之外的一个原有对象与某个接口匹配。这里外籍球员与球员就属于两个不同的类,通过Translator来进行适配,可以在不改变两个类的基础上,实现功能复用。如果想使用一个已经存在的类,但如果它的接口,也就是它的方法和你的要求不相同时,就应该考虑使用适配器模式。:适配器模式主要应用于希望复用一些现存的类,但接口又与复用环境要求不一致的情况。两个类所做的事情相同或者相似时,但是具有不同的接口时要使用它。原创 2023-09-11 19:11:19 · 164 阅读 · 0 评论 -
设计模式之职责链模式
结果是职责链可简化对象的相互连接,它们仅需保持一个指向其后继者的引用,而不需保持它所有的候选接受者的引用。ConcreteHandler类,具体处理类,处理它所负责的请求,可访问它的后继者,如果可处理该请求,就处理,否则就该请求转发给它的后继者。这里发出这个请求的客户端并不知道这当中的哪一个对象最终处理这个请求,这些系统的更改可以在不影响客户端的情况下动态地重新组织和分配责任。IStageHandler:定义可以处理“过关判断”和“关卡开启”的接口,也包含指向下一个关卡对象的引用。原创 2023-09-14 16:32:30 · 338 阅读 · 0 评论 -
设计模式之外观模式
可以为新系统开发一个外观Facade类,来提供设计粗糙或高度复杂的遗留代码的比较清晰的简单的接口,让新系统与Facade对象交互,Facade与遗留代码交互所有复杂的工作。外观模式(Facade),为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。从原本需要操作的多个子系统的情况,改为只需要面对一个整合后的界面。整合所有子系统的接口及功能,并提供高级界面(或接口)供客户端使用。增加外观Facade可以提供一个简单的接口,减少它们之间的依赖。原创 2023-09-15 12:22:53 · 583 阅读 · 0 评论 -
设计模式之桥接模式
ICharacter:角色的抽象接口拥有一个IWeapon对象引用,并且在接口中声明了一个武器攻击目标WeaponAttackTarget()方法让子类可以调用,同时要求继承的子类必须在Attack()中重新实现攻击目标的功能。IPlayer、IEnemy:敌人与玩家角色,实现攻击目标Attack()时,只需要调用父类的WeaponAttackTarget()方法,就可以使用当前装备的武器攻击对手。合成则是一种强的‘拥有’关系,体现了严格的部分和整体的关系,部分和整体的生命周期一样。原创 2023-09-13 18:46:39 · 401 阅读 · 0 评论 -
设计模式之代理模式
首先第一步确定你需要做的事情,然后将其设置为接口(Subject)然后第二步确定真实实体,继承接口类(RealSubject)最后第三步确认实体来进行代理,继承接口类实现代理类(Proxy)原创 2022-08-22 22:53:52 · 163 阅读 · 0 评论 -
设计模式之原型模式
原型模式其实从一个对象再创建另外一个可定制的对象,而且不需知道任何创建的细节。原型模式,用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。原创 2023-09-18 17:34:58 · 287 阅读 · 0 评论 -
设计模式之中介者模式
ConcreteMediator是具体中介者对象,实现抽象类的方法,它需要知道所有具体同事类,并从具体同事接收消息,向具体同事发出命令。大量的连接使得一个对象不可能在没有其他对象的支持下工作,系统表现为一个不可分割的整体,所以,对系统的行为进行任何较大的改动就十分困难了。ConcreteColleague是具体抽象类,每个具体同事只知道自己的行为,而不了解其他同事类的情况,但它们却都认识中介者对象。,用一个中介对象来封装一系列的对象交互。Mediator是抽象中介者,定义了同事对象到中介者对象的接口。原创 2023-09-15 15:01:19 · 207 阅读 · 0 评论 -
设计模式之装饰模式
装饰模式是利用SetComponent来对对象进行包装的。每一个装饰对象的实现就和如何使用这个对象分离开了,每个装饰对象只关心自己的功能,不需要关心如何被添加到对象链当中[DPE]如果只有一个ConcreteComponent类而没有抽象的Component类。那么Decorator类可以是ConcreteComponent的一个子类。原创 2022-08-22 01:51:16 · 142 阅读 · 0 评论 -
设计模式之备忘录模式
Memento(备忘录): 负责存储Originator对象的内部状态,并可防止Originator以外的其他对象访问备忘录Memento。备忘录有两个接口,Caretaker只能看到备忘录的窄接口,它只能将备忘录传递给其他对象。Originator(发起人):负责创建一个备忘录Memento,用以记录当前时刻它的内部状态,并可使用备忘录恢复内部状态。备忘录模式:在不破坏封装性的前提下,捕获一个对象内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。原创 2023-10-23 12:29:12 · 128 阅读 · 0 评论 -
设计模式之观察者(发布订阅)模式
订阅发布模式,发布者的消息发送者不会讲消息直接发送给订阅者,这意味着发布者和订阅者不知道彼此的存在。在发布者和订阅者之间存在第三个组件,称为消息代理或调度中心和中间件,它维持着发布者和订阅者之间的联系,过滤所有发布者传入的消息并相应地发布它们给订阅者。2、发布者与订阅者耦合性降低,发布者只管发布一条消息后,订阅者只监听发布者的事件名,只要发布者的事件名不变,它不管发布者如何改变。的,让耦合的双方都依赖于抽象,而不是依赖于具体,从而使得各自的变化都不会影响另一边的变化。订阅发布是观察者模式的一种变种。原创 2023-09-23 12:24:38 · 352 阅读 · 0 评论 -
设计模式之享元模式
也可以讲一些共享组件定义为类的成员,成为内部状态;提供工厂方法产生对应的组件,当产生的是共享组件时,就加入到Flyweight管理容器内。UnsharedConcreteFlyweight(不可以共享的组件)实现Flyweight接口,也可以选择不继承自Flyweight接口。产生的组件时可以共享的,并加入到Flyweight管理器中。内部通常使用容器类来存储共享的Flyweight组件。ConcreteFlyweight(可以共享的组件)可以定义为单独的组件,不包含任何共享资源。原创 2023-09-20 15:34:17 · 432 阅读 · 0 评论 -
设计模式之组合模式
组合模式,将对象组合成树形结构以表示‘部分-整体’的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。原创 2023-09-20 16:57:55 · 463 阅读 · 0 评论 -
设计模式之抽象工厂
这种类型的设计模式属于。3、需要创建华为和苹果的工厂类,先将工厂类进行抽象,里面有创建两个产品的方法,返回的是产品的接口类。2、提供一个产品类的库,所有的产品以同样的接口出现,从而使得客户端不依赖于具体的实现。产品族:一个工厂类生产出的产品属于一个产品族,视作具体工厂类生产出来的具体产品类。产品等级:不同工厂类的同一个产品等级,产品等级可以视作继承抽象工厂类的工厂类。4、创建华为和苹果的工厂实现类,继承工厂类接口,实现创建各自产品的方法。5、客户端调用时,直接用工厂接口类创建需要的工厂,拿到对应的产品。原创 2023-09-19 14:43:49 · 393 阅读 · 0 评论