Unityd 常用设计模式:简单工厂模式
来源:互联网 发布:视频拍摄软件 编辑:程序博客网 时间:2024/06/05 05:43
Unityd 常用设计模式:简单工厂模式
最近在学设计模式,群里的朋友说,单例,抽象工厂,简单工厂,策略模式用得比较多,所以就来好好的研究一下设计模式,有一个号的编程思想总是好的。
先说事例的思路:游戏中肯定有怪物,比如小怪和boss都是属于怪物的,如果我一个关卡是小怪,那我就要new xiaoguai(),一个关卡小怪和boss都有,那么new xiaoguai(),new boss(),这样一个个new出来很麻烦,如果我有一个生产怪物的工厂,我只需要告诉他我需要什么类型的怪物她马上给就给我生产一个出来,那就方便多了。
贴代码:
//抽象产品角色interface Monster{ void run(); void attack(); void death();}//具体产品角色class xiaoguai : Monster{ public void run() { Console.WriteLine("xiaoguai"); } public void attack() { Console.WriteLine("xiaoguai"); } public void death() { Console.WriteLine("xiaoguai"); }}//具体产品角色class boss : Monster{ public void run() { Console.WriteLine("boss"); } public void attack() { Console.WriteLine("boss"); } public void death() { Console.WriteLine("boss"); }}//工厂类角色,这里用到了单利模式中的恶汉式class MonsterFactory{ private static MonsterFactory _Intance; private MonsterFactory() { } public static MonsterFactory Instance { get { if (_Intance == null) { _Intance = new MonsterFactory(); return _Intance; } return _Intance; } } public Monster Prodution(int nub) { Monster mo = null; switch (nub) { case 0: mo = new xiaoguai(); break; case 1: mo = new boss(); break; } return mo; } //开始生产啦。。。 public static void Main(string[] ages) { MonsterFactory.Instance.Prodution(0).attack(); Console.Read(); }}
以后我们需要什么类型的怪物只需要告诉工厂你想生产的怪物代号就可以得到所需的怪物了~嘿嘿,是不是更加方便。
总结一下这个事例用到的一些内容:接口,单例模式,简单工厂模式。
PS。如果有什么错误或者建议欢迎指出来~一起学习,一起进步
0 0
- Unityd 常用设计模式:简单工厂模式
- 常用设计模式之简单工厂模式
- 常用设计模式之简单工厂模式
- iOS常用设计模式——简单工厂设计模式
- 最常用的设计模式----工厂模式家族(简单工厂模式, 工厂方法模式, 抽象工厂模式)
- 常用Java设计模式系列(5)- 简单工厂、工厂方法模式和抽象工厂模式
- 简单工厂设计模式
- 设计模式-----简单工厂
- 简单工厂设计模式
- 设计模式:简单工厂
- 设计模式 - 简单工厂
- 设计模式 简单工厂
- 【设计模式】【简单工厂】
- 简单工厂设计模式
- 简单工厂设计模式
- 设计模式--简单工厂
- 简单工厂设计模式
- 简单工厂设计模式
- SecureCRT自动断开与服务端连接的解决办法
- 撤销功能的实现——备忘录模式(Memento Pattern)
- 解决PHP Warning: Cannot modify header information - headers already sent by...
- ultraedit高亮显示verilog文件
- request.getScheme()
- Unityd 常用设计模式:简单工厂模式
- TextUtils源码翻译
- 【集训队模拟 2013】Run
- SimpleDateFormat安全的时间格式化
- 用Checkbox来控制文本框是否为灰色不可编辑
- Redis数据库的学习与实践—Redis的常用命令及高级应用
- Swift开发教程--如何使UITableViewController背景透明
- 利用GDAL提取正射影像中的感兴趣区域
- java中的String.format使用