单例模式(Singleton),程序猿用起来,就像在孩童时期,大家组团去网吧玩网络游戏一样,用起来让人上瘾,但用多了伤身啊
- 什么时候使用单例模式/单例模式有什么用?
官方的说法是:当此类只有一个对象,且需要一个随时可以调用的全局的方法来获取这个对象时使用;
//单例模式的实现需要程序语言的支持,需要编程语言有静态Static属性,有静态类方法才可使用
嗯。。。我举个例子吧,假设,你是一个CEO,因为一些特殊原因,你现在所在的位置是黑龙江省的黑河市(中国人口分界线的最北城市,俄罗斯的对面,也是我老家),你想要回你自己所在上海的公司,假设你只能选择座火车(这CEO当的也是挺难受,专机都没有)你会如何买票??
通常买票顺序:
1、先买票到黑龙江省的哈尔滨市
2、然后买票到北京
3、最后买票到上海
4、从上海火车站座自己的专车回公司
觉得路太长了?嫌买的票太多??不喜欢拎着包过那么多次安检???
我有个好方法,
你想啊,你是个CEO,你最不缺的就是钱啊
你直接从起点建设一条 直达你在上海总部---你自己的办公室的铁路,这不就不麻烦了嘛。
当然,这个例子比较扯淡
不过呢,这 就是单例模式的最大好处了
1、方便调用。你不需要写非常长的一串引用,也不需要写GetCompont<>(),也不需要new,用就完了,不用多次买票。
2、只有一个类。这条火车道是你自己买的,你只有你一个人,总不会有第二个CEO抢你的火车道吧。(在你写了一个私有的构造函数的时候才会有这种特性)
//单例虽好,可不要过度使用哦!单例模式违反了开闭原则,当需求增加时只能修改原有代码
//可以每个子类都实现单例模式,再由父类的Instance去获取这些子类——摘自《设计模式与游戏完美开发》
- 单例模式的核心写法/如何写一个单例模式?
想写一个单例模式很简单
1、首先准备好一个你想变为单例模式的类
2、给这个类写一个私有 静态的 该类类型的变量名为_instance
3、在这个类中给这个变量写一个 与外界交互的方法 或者属性,名为Instance,然后利用这个方法或者属性给变量赋初值//_instance=new 类名;
4、给这个类写一个私有的构造函数,防止外界new//这里是负责 防止外界多new一个类出来
namespace Ice
{
namespace shejimoshi设计模式
{
namespace Singleton单例模式
{
public class Singleton单例模式
{
public int xxx随便写的变量;
private static Singleton单例模式 _instance;
public static Singleton单例模式 Instance
{
get
{
//如果此单例为空 就自动生成一个自己
if (_instance == null)
{
_instance = new Singleton单例模式();
}
return _instance;
}
}
private Singleton单例模式() { }
}
public class Main想要使用单例的类
{
void Mian想使用单例的方法()
{
Singleton单例模式.Instance.xxx随便写的变量 = 10;
}
}
}
}
}