unity面试知识点——设计模式

81 阅读4分钟

1单例模式:

特点1.一个类只能有一个实例

2.自己创建这个实例

3.整个系统都要使用这个实例

单例模式的基本构造

  1. 私有的构造方法(确保全局唯一性)
  2. 私有的、静态的实例化变量应用
  3. 提供一个公有的、静态的获取类实例对象方法

2.工厂模式:

定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。这满足创建型模式中所要求的“创建与使用相分离”的特点。

使用场景:比如说写技能是一系列类,那么就可以使用工厂模式创建。

游戏场景转换;角色AI状态管理。

3. 观察者模式 (服务器与客户端之间的通信)

观察者模式定义了对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知,并自动更新。

类似于邮件订阅和RSS订阅,当我们浏览一些博客或wiki时,经常会看到RSS图标,就这的意思是,当你订阅了该文章,如果后续有更新,会及时通知你。

多用于角色血条值下降被改变(防御力、攻击力等)

4. 发布-订阅者模式(服务器与客户端之间的通信)

是一种消息范式,消息的发送者(称为发布者)不会将消息直接发送给特定的接收者(称为订阅者)。而是将发布的消息分为不同的类别,无需了解哪些订阅者(如果有的话)可能存在。同样的,订阅者可以表达对一个或多个类别的兴趣,只接收感兴趣的消息,无需了解哪些发布者存在。

事件中心模块就是一种发布订阅模式的样板

5. 组合模式

组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。

多用于: 您希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象。

例如:不同的界面的逻辑和UI通过一个管理器统一控制。不同的类继承同一个接口,然后字典用这个接口统一管理。

6.MVC

MVC全名是Model View Controller,是模型(Model)-视图(View)-控制器(Controller)的缩写,一种软件设计典范。

用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。

同一个模块内

M只用来操作数据并发送更新消息。

V只用来接受消息并控制界面显示跳转

使用C来处理界面与数据的频繁操作。

一般流程:

  1. View(界面)触发事件
  2. Controller (业务)处理了业务触发数据更新
  3. 更新了Model (数据)
  4. Model(带着数据)回到了View(界面)
  5. View更新了数据

总结一下,关于MVC各层之间关系所对应的设计模式

  1. View层,单独实现了组合模式。

  2. Model层和View层,实现了观察者模式。

  3. View层和Controller层,实现了策咯模式。

7. 代理模式

一个是真正的你要访问的对象(目标类),一个是代理对象,真正对象与代理对象实现同一个接口,先访问代理类再访问真正要访问的对象。

代理模式就是多一个代理类出来,替原对象进行一些操作。

比如我们在租房子的时候回去找中介,为什么呢?因为你对该地区房屋的信息掌握的不够全面,希望找一个更熟悉的人去帮你做,此处的代理就是这个意思。再如我们有的时候打官司,我们需要请律师,因为律师在法律方面有专长,可以替我们进行操作,表达我们的想法。

多用于代理Text, Button, Image等组件的功能;登陆设置;委托;代理下载资源等。

### 8. 策略模式

定义一系列算法,并将每个算法封装起来,使他们可以相互替换,且算法的变化不会影响到使用算法的客户。

策略模式的决定权在用户,系统本身提供不同算法的实现,新增或者删除算法,对各种算法做封装。因此,策略模式多用在算法决策系统中,外部用户只需要决定用哪个算法即可。

多用于技能效果类和方法的构建。