设计模式 之 单例模式//出行靠火车的CEO

单例模式(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;
                }
            }
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值