设计模式
文章平均质量分 92
p_帽子戏法
南京大学计算机科学与技术系19级本科小萌新
展开
-
Unity实用框架(四)全局数据管理框架
数据管理看似简单,里面的门道却很深。说它简单,是因为实现在一个游戏中传递数据、储存数据的方式实在太多,实现方式也并不复杂;说它门道深,是因为,要想实现一个安全的、通用的、灵活的、高效的数据管理框架,是一件相当讲究的事情。下面,笔者将介绍一种实现全局数据管理的方式,供读者参考。......原创 2022-07-18 17:04:11 · 2357 阅读 · 0 评论 -
Unity实用框架(三)事件系统
在Unity提供的事件注册基础上,实现一个更加灵活的事件系统。原创 2022-07-18 15:07:21 · 3517 阅读 · 0 评论 -
Unity实用框架(二)协程管理框架
C# unity自带的Coroutine提供了最基础的使用协程的接口,在此基础上,笔者将提供一种能够适用于更多场景、更容易由程序员全权控制的协程管理框架.原创 2022-07-16 17:41:34 · 1317 阅读 · 2 评论 -
Unity实用框架(一)场景管理框架
众所周知,Unity引擎本身提供了具有切换场景功能的SceneManager模块,但只包含比较基础的功能,比如简单的切换场景、创建场景等,想要使得我们的场景管理框架能够适用于更加复杂的情形,显然需要一套更加强大的接口。下面,笔者将提供一种撰写灵活好用的SceneManager的可行思路。.........原创 2022-07-16 12:54:49 · 3166 阅读 · 0 评论 -
设计模式详解:Iterator(迭代器)
Iterator 迭代器设计模式学习:概述意图提供一个方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。一个所谓的聚合对象,也就是用某种数据结构组合起来的一堆数据的集合。对这种对象的操作必定要涉及对单独某个元素的访问和处理。比如,对于一个数组聚合对象,一定有关于这个数组元素增删改的操作。但是,处于维护系统良好封装性的目的,设计者当然不希望将自己数据结构太详细地暴露在客户方,这同时也会增加客户操作的难度。另一方面,大家也都不希望这一聚合对象中充斥着太多遍历方式的接口:对于客户而言这原创 2021-03-06 17:53:53 · 303 阅读 · 0 评论 -
设计模式详解:Composite(组合模式)
Composite 组合模式设计模式学习:概述意图将对象组合为树形结构以表示“部分-整体”的层次结构。Composite使得用户对单个对象和组合对象的使用具有一致性。知道广义表吗?如果你了解广义表,应该就可以很好的理清楚组合模式的定义。在广义表中,一个表内的元素即可以是一个基础元素,也可以是另一个表的表头,也就是说,表本身作为一个元素储存在另一个表中,是一种递归的储存结构。图形化的广义表如下所示,大写字母表示表头,小写字母表示基础元素。#mermaid-svg-RzsYtnOODCD3sC原创 2021-03-01 00:56:49 · 814 阅读 · 1 评论 -
设计模式详解:Singleton(单例类)
Singleton(单例类)设计模式学习:概述意图保证每一个类仅有一个实例,并为它提供一个全局访问点。顾名思义,单例类Singleton保证了程序中同一时刻最多存在该类的一个对象。有些时候,某些组件在整个程序运行时就只需要一个对象,多余的对象反而会导致程序的错误。或者,有些属性型对象也只需要全局存在一个。比如,假设黑体字属性是一种对象,调用黑体字属性对象的函数来让一个字变成黑体。显然并不需要在每创造一个黑体字时就生成一种属性对象,只需要调用当前存在的唯一对象的函数即可。Singleton模原创 2021-02-17 13:58:25 · 15681 阅读 · 6 评论 -
设计模式详解:Prototype(原型机)
Prototype 原型机设计模式学习:概述意图用原型实例来指定创建对象的种类,并且通过拷贝这些原型创建新的对象。Prototype模式简单来说,就是通过克隆的方法创建对象。解释这个模式其实很好理解,你可以想象自己做PPT的过程:肯定是到处copy好看的模板来使用(不会有人每一个效果都自己做吧)。原型机的本质就是运行时模板。简单的代码表示如下:class Product{ virtual Product* clone();}class ProductA: public Pr原创 2021-02-14 15:55:17 · 919 阅读 · 0 评论 -
设计模式详解:Abstract Factory(抽象工厂)
Abstract Factory 抽象工厂设计模式学习:概述除夕前一天还在写学习笔记,我都佩服我自己了O(∩_∩)O意图提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。抽象工厂将具体的类分离,因为一个工厂封装了创建产品对象的责任和过程,它将客户和类的实现分离。一个具体工厂类只在应用初始化时出现一次,这使得换用另一个风格的工厂更加容易。由于一个抽象工厂创建了一个对象系列,因此更换工厂之后,工厂产品会立即发生改变。同时,抽象工厂也可以解决产品匹配的问题。因为使用同一个工厂制原创 2021-02-10 21:27:35 · 427 阅读 · 0 评论 -
设计模式详解:Factory Method(工厂方法)
Factory Method 工厂方法设计模式学习:概述意图定义一个用于创建对象的接口,让子类决定实例化哪个类。Factory Method使得一个类的实例化延迟到其子类。Factory Method又称作Virtual Constructor(虚构造器)。在软件系统中,经常面临着创建对象的工作,而需求的变化常常导致所需要创建的对象的具体类型发生变化。Factory Method使得可以绕过常规的对象创建方法(new关键字),将封装机制引入到对象的创建工作中,从而避免了客户程序与“具体对象创原创 2021-02-09 11:03:43 · 456 阅读 · 0 评论 -
设计模式详解:Bridge(桥接模式)
Bridge 桥接模式设计模式学习:概述意图将抽象部分与它的实现部分分离,使得二者都可以独立地变化。别名:Handle/Body当一个抽象机制有多个可能的实现时,我们通常采用继承来协调它们的关系。但是,这有时会带来硬编码不灵活的问题,Bridge机制可以解决因为继承导致的不灵活的毛病。事实上,Bridge模式也是遵循了单一职责原则的指导:桥接模式将应用程序的业务功能与具体实现解耦,也就是将抽象与具体实现解耦,从而让位于不同功能维度的二者可以各自变化而不受影响。站在稳定-变化的角度,Brid原创 2021-02-05 13:49:59 · 1177 阅读 · 1 评论 -
设计模式详解:Decorator(装饰模式)
Decorator 装饰模式设计模式学习:概述意图动态地给一个对象添加一些额外的职责,就增加功能来说,Decorator模式相比生成子类更为灵活。Decorator(装饰模式)也被称作Wrapper(包装器)。Decorator模式是对组件间协作的一种规划,它旨在解决为某个对象添加附加功能时导致的不够灵活、以及子类爆炸的问题。通过采用组合而非继承的手法,Decorator模式实现了在运行时动态扩展功能的能力,而且可以根据需要扩展多个功能。避免使用继承带来的**“灵活性差”和“多子类衍生问题”*原创 2021-02-04 10:53:43 · 1822 阅读 · 0 评论 -
设计模式详解:Observer(观察者模式)
Observer 观察者模式设计模式学习:概述意图定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知并自动更新。Observer(观察者模式),或者又叫Event(事件模式),是我们在编写UI程序时一定会使用到的一种设计理念。Java中的EventListener接口就是完成的这一功能。当一个类模块需要从另一个类模块获取信息,而这两者又无法用继承、组合的方式来描述时。获取通知的的模块需要获取发送通知的模块的信息,而发送通知的模块事实上不需要知道前者原创 2021-01-27 10:44:10 · 1229 阅读 · 0 评论 -
设计模式详解:Strategy(策略模式)
Strategy 策略模式设计模式学习:概述意图定义一系列算法,把它们一个个封装起来,并且使他们可以互相替换。本模式使得算法可以独立于它的客户而变化。Strategy模式将算法独立于程序流程之外,降低了算法与程序主流程之间的耦合度。将算法硬编入程序主流程段(和程序主流程写在一起),会导致程序难以维护。日后再添加新的算法时,也不利于扩展。并且,通常我们只想用一部分算法来支持我们的程序,比如提供的99个算法我们只用到2-3个,那么全部编写在一起会造成内存的大量浪费。当然这只是次要问题,主要要解原创 2021-01-26 10:26:44 · 1366 阅读 · 0 评论 -
设计模式学习,23种设计模式详解:概述
设计模式学习:概述首先,别把程序设计不当设计!程序的框架就是建筑物的骨架,内部实现不过是装修改造。只要骨架设计没有问题,装修起来也是得心应手。一个糟糕的程序框架,对于接下来的Debug和程序的更新换代来讲,是灾难性的(我在本学期的数字电路实验课和上学期的程序设计实验课中都深有体会…)。一个优秀的程序,不仅体现在实际功能上和性能上的优秀,更要体现在代码复用性、可扩展性等方面。实现同样的功能,能用两百行实现为什么要写2000行?修改2份文件就能完成更新,为什么要修改十几份?这些,都是在程序框架设计的过程中原创 2021-01-19 17:47:01 · 929 阅读 · 2 评论 -
设计模式详解:Template Method(模板方法)
Template Method: 模板方法意图定义一个操作中算法的骨架,而将一些操作延迟到子类中。TemplateMethod使得子类可以不改变一个算法的结构,即可重定义该算法的某些特定步骤。(GOF: 《设计模式》)Template Method可以说是所有设计模式中最常用的一种了。常用到什么地步呢?就算你从来没接触过任何设计模式,你也一定使用过这种模式,只是自己没有意识到罢了。代码案例先上代码:class APP{ bool step2(); int step4();原创 2021-01-19 16:45:39 · 1240 阅读 · 0 评论