设计模式
2020-04-02 08:03
309 查看
最近准备学untiy做做游戏玩,然后发现,视频开头都是设计模式,然后就复习了下,顺便把理解放上来,写笔记的时候太晚了,就把前面认真写了,后面太困了,随便写写
单例式
单例式简单点说,就是一个只能实例一次的方法,这样可以节省内存,然后贴代码
这是懒汉模式,需要手动创建
public class 单例模式 { private 单例模式()//这个构造函数的作用就是阻止外面实例化 { Console.WriteLine("已经被构建了"); } private static volatile 单例模式 _单例模式=null;//这个是用来保存实例的, private static object 锁 = new object(); public static 单例模式 实例化()//这个是外面用来实例的,然后用上面的来保存 { if (_单例模式==null)//如果已经被实例化了,就不用等待了,= { lock (锁)//锁住,避免多线程多个创建 { _单例模式 = new 单例模式();//实例 } } return _单例模式; } public void 方法() { Console.WriteLine("方法"); } }
这是饿汉模式,自动创建,只需要获取返回的值即可,所以饿汉模式比懒汉模式好,但不是绝对的
public class 单例模式饿汉式//这个是懒汉式.就是需要手动实例的 { private 单例模式饿汉式()//这个构造函数的作用就是阻止外面实例化 { Console.WriteLine("已经被构建了"); } private static volatile 单例模式饿汉式 _单例模式饿汉式 = new 单例模式饿汉式(); //程序加载就创建了 public static 单例模式饿汉式 创建() { Console.WriteLine("这是静态方法,程序启动时就已经创建了"); return _单例模式饿汉式;//返回值 } public void 方法() { Console.WriteLine("方法"); } }
然后单例一般用来计数,这个数字不可以有多个,还有字典之类的,然后单例不会释放,会一直保存,所以尽量少用,还有就是泛型单例不可能的,因为不同类型就有不同的类型
简单工厂
简单工厂模式,打个比方,一台饮水机,如果我要喝冷水,那么按冷水按钮就行了,如果我要喝热水,按热水即可,根据条件来输出一个值,就这么简单
public void 饮水机(string 类型) { if (类型=="冷水") { Console.WriteLine("出冷水了"); } if (类型=="热水") { Console.WriteLine("出热水了"); } } //然后下面是实例化的 string a = "冷水"; 简单工厂 工厂1 = new 简单工厂(); 工厂1.饮水机(a);//然后就输出了我想要的冷水
反射加简单工厂模式升级版
然后简单工厂还能在升个级,比如我想要喝饮料,然后我下了个单,让工厂自己给我送过来,这个就用反射来做,然后单子从哪拿呢,可以放到配置文件,这样方便改,也可以扩展
public class 饮料 { public string yinliao = "可乐"; } string 类型= ConfigurationManager.AppSettings["饮料类型"]; string 程序集 = 类型.Split(',')[0]; string 模块 = 类型.Split(',')[1]; //这是一种扩展,把需要的东西放在配置文件里面,还可以有更多扩展,比如放在DLL中 //然后通过反射获取 Assembly assembly = Assembly.Load(程序集); Type t = assembly.GetType(模块); var o = Activator.CreateInstance(t); string yl = ""; foreach (var item in t.GetFields()) { yl=item.GetValue(o).ToString(); } 简单工厂 工厂2 = new 简单工厂();
然后如果一个工厂功能太多了,那么可以拆分下,一个父类工厂,然后下面很多继承的子类小工厂,这样可以扩展,很多地方都可以这么做,配置放在配置文件,然后跑配置文件来扩展
组合
在一个方法里面,new 另一个方法,然后对这个方法进行使用,多个方法组合使用.这就是组合.组合优于继承
依赖
依赖是一个方法内部出现其他方法,所以不要用,因为依赖的东西可能不稳定
观察者模式
解决一个对象里面某件事情发生后,会触发一系列其他对象的动作,这个具体可以看我另一篇文章
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- 23种设计模式简单概述之单例模式
- 设计模式--观察者(监听)设计模式
- 如何学习设计模式
- 设计模式学习笔记——抽象工厂(Abstract Factory)模式
- php 设计模式(工厂方法模式)
- 设计模式之享元模式
- 设计模式:
- 设计模式-模块方法模式
- (十三)WebGIS中工具栏的设计之命令模式
- IOS设计模式第二篇之单例设计模式
- 设计模式(创建型)之工厂方法模式(Factory Method Pattern)
- 自己不确定用法对不对的设计模式(代理模式)
- 23种设计模式
- 设计模式随笔-建造者模式
- php设计模式之二__单例模式
- 朱晔的互联网架构实践心得S1E7:三十种架构设计模式(上)
- 设计模式:责任链模式
- C#设计模式——生成器模式(Builder Pattern)
- 追MM与Java的23种设计模式
- 最常用的设计模式---组合模式(C++实现)