设计模式以及在Unity中的应用场景

Acy求知Unity Week1_day6

单例模式

一个类只能有一个实例。即,类只能在内部实例一次,提供一个接口,但在外部无法对此类实例化。
一般用于:各种管理器中:声音、场景、角色、实体管理器
特点:1.只能有一个实例;2. 全局唯一;3.只能自己创建自己的唯一实例

·Private static 大名 _小名;
1-1.实例全局唯一:用 static 定义类的实例,static定义的 属于全局 不属于类对象本身
1-1.实例只能在类的内部发生:将构造函数私有化 ( public 改 private)

·Public static 大名 小名 { get { … return } }
1-2.需要提供一个供外部访问的变量:Public 一个 Instance;并用get初始化_instance
在这里插入图片描述
可以调用GetHashCode()得到哈希值进行验证:哈希值相同。

工厂模式

·简单工厂模式:(静态工厂方法)。创建型模式。由一个工厂对象 决定 创建出哪一种产品类的实例。
特点:只生产一种品牌(类型)的产品,在 工厂中动态创建
缺点:新增产品品牌(类型)时,需修改工厂类(违反开闭原则)。

·工厂模式:分多个工厂,不同工厂创建一种产品。弥补 简单工厂缺点 。
特点:只生产一种品牌(类型)的产品,在 具体的子类工厂中创建
抽象工厂模式:处理系列产品问题,多个工厂------每个工厂有–多种产品

简单工厂模式:创建 苹果鼠标;更改共有的中间件。
如果要在简单工厂模式下 增加苹果鼠标,需要1.增加MAppleMouse C#脚本,放入同命名空间,继承抽象类,覆盖实现Print方法;2.在执行脚本的枚举里增加Apple枚举值,创建鼠标方法时实例化它;3.在简单工厂模式脚本的判断里增加case。
这些违反了开闭原则

工厂模式:每个鼠标都有自己的中间件,创建苹果鼠标,增加自己的中间件,这样就不会违反开闭原则了,每次只更改自己的中间件。

1.由于会有很多个中间件,遂创建基类FactorBase C#脚本。变成抽象类。
	由于是中间件,所以和MSimpleMouse简单类 类似,将MSimpleMouse的CreateMouse方法复制,创建一个抽象类。
2.创建两个中间件C#,戴尔、惠普,让他们继承自FactorBase
	实现FactorBase 里面的抽象接口
	直接return new鼠标的mouse对象
3.中间件类增加完成,外界如何访问:只需在外界创建中间件
	在start中void RunFactor(),创建戴尔中间件;调用戴尔中间件的Creatmouse方法,获得鼠标子类;调用鼠标子类中的print方法。
4.新建苹果鼠标
	新建C#苹果鼠标脚本;继承自FaceBase;实现抽象方法;返回new MAppleMouse()-------------------这之前还要再C#新建一个MAppleMouse()继承自MAbstractMouse; 写一个覆盖函数Print
	再在start中创建苹果中间件;调用createMouse赋给苹果鼠标子类;子类调用print方法

观察者模式

观察者模式:(发布/订阅模式)
·一种一对多的依赖关系,使多个观察者对象(老鼠) 同时监听某一个主题对象(猫)
·当主题对象发生变化(猫出现)时,通知所有观察者对象(老鼠),使它们自动更新自己(老鼠逃跑)。

常用于 实现事件处理系统
·依赖 多播委托 实现多对一的关系
·特点:发布者(多播委托本身) + 订阅者(赋值的函数) = 观察者模式-------------再听
·通过+=给多播委托赋值----赋值的那些函数 是 订阅者
当多播委托被执行时,绑定在多播委托上的函数,会依次触发

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值