设计模式之Singleton模式(单例模式)

今天学习的是Singleton模式,又称单例模式,这种模式是方便在开发游戏的时候,我们可以快速的去访问一些对象。而游戏中的有些对象是唯一的或者数量是有限制的,比如游戏的总控制系统。而Singleton模式的一个定义就是:确认类只有一个对象,并提供一个全局的方法来获取这个对象。其符合两个特质:(1)同时间只存在一个对象,当然有时候对象的数量是限定的,但是不一定唯一;(2)提供一个快速获取这个对象的方法。一般单例模式的实现范例如下(C#版)

public class Singleton 
{
    public static Singleton _instance;
    public static Singleton Instance
    {
        get{
            if(_instance==null){
                _instance=new Singleton();
            }
            return _instance;
        }
    }
    private Singleton(){}   
}

一般我们在类中定义一个Singleton类的“静态属性成员”_instance,并定义一个static 方法来获取_instance属性。这里使用了C#中的getter方法来实现Instance方法。

但是有时候因为Singleton模式可以快速访问对象,会在游戏制作中,出现滥用Singleton模式的情况。深入思考的话,Singleton模式其实违法了设计模式中的“开闭原则”。因为通过Instance方法获取对象是通过“实现类”而不是“接口类”。所以很多时候我们会用一些其他的方法来代替Singleton模式:(1)让类具有计数功能来限制对象的数量,限制数量,这是Singleton模式的一个特性。所以我们如果只是想实现这个特质的话,就可以使用计数器;(2)指定类的静态成员。这种方法可以很快速的访问一些类。将要访问的类当做参数一样传进要调用的类中。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值