您的位置:首页 > 其它

设计模式

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 另一个方法,然后对这个方法进行使用,多个方法组合使用.这就是组合.组合优于继承

依赖

依赖是一个方法内部出现其他方法,所以不要用,因为依赖的东西可能不稳定

观察者模式

解决一个对象里面某件事情发生后,会触发一系列其他对象的动作,这个具体可以看我另一篇文章

  • 点赞
  • 收藏
  • 分享
  • 文章举报
漫漫长路,慢慢走 发布了12 篇原创文章 · 获赞 2 · 访问量 228 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: