首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

保证一个类无法在外部被实例化的三种方法,哪种更加好?解决方案

2012-04-10 
保证一个类无法在外部被实例化的三种方法,哪种更加好?保证一个类无法在外部被实例化的三种方法,哪种更加好

保证一个类无法在外部被实例化的三种方法,哪种更加好?
保证一个类无法在外部被实例化的三种方法,哪种更加好?
哪一种从逻辑上更说的过去。
谢谢各位。

C# code
    //1.单实例,构造函数是私有的,无法在外部new    public class Manager    {        private Manager()        {        }        private static readonly Manager _Instance = new Manager();        public static Manager Instance        {            get            {                return _Instance;            }        }        private string _Name;        public string Name        {            get            {                return _Name;            }            set            {                _Name = value;            }        }        public void Buy()        {        }    }   //2.静态类,无法被实例化    public static class Manager    {        private static string _Name;        public static string Name        {            get            {                return _Name;            }            set            {                _Name = value;            }        }        public static void Buy()        {        }    }    //3.抽象类,无法被实例化    public abstract class Manager    {        private static string _Name;        public static string Name        {            get            {                return _Name;            }            set            {                _Name = value;            }        }        public static void Buy()        {        }    }


[解决办法]
楼下回答 帮你顶上去
[解决办法]
看需要。
如果提供的都是静态方法。那就用静态类,如果是单利模式,就private构造函数,提供一个静态的Instance属性。如果不希望别人实例化,做成抽象类实在是乱来了。
[解决办法]
探讨
看需要。
如果提供的都是静态方法。那就用静态类,如果是单利模式,就private构造函数,提供一个静态的Instance属性。如果不希望别人实例化,做成抽象类实在是乱来了。

[解决办法]
如果没有必要“保证”,那么去保证就是闲得太多了。设计模式的某个就有这个毛病。
[解决办法]
探讨
看需要。
如果提供的都是静态方法。那就用静态类,如果是单利模式,就private构造函数,提供一个静态的Instance属性。如果不希望别人实例化,做成抽象类实在是乱来了。

[解决办法]
但是他是从设计模式就是法律的角度,去强调“保证”。而我要问的是,允许new一个实例(尽管懂得的人都知道不用new而直接调用static的GetInstance方法就行),碍谁蛋疼了呢?
[解决办法]
探讨
引用:
看需要。
如果提供的都是静态方法。那就用静态类,如果是单利模式,就private构造函数,提供一个静态的Instance属性。如果不希望别人实例化,做成抽象类实在是乱来了。


设计模式中,搞这样的要求:.ctor必须是private的,以此来“保证”。然后再搞个static的GetInstance方法获得全局唯一的实例。

其实就算new一个……

[解决办法]
探讨
但是他是从设计模式就是法律的角度,去强调“保证”。而我要问的是,允许new一个实例(尽管懂得的人都知道不用new而直接调用static的GetInstance方法就行),碍谁蛋疼了呢?

[解决办法]
看需要吧,没有什么绝对的好与坏!
[解决办法]
学习下
[解决办法]
C# code
    public class Manager    {        public static Manager GetInstance = new Manager();        private Manager()        {        }    }
[解决办法]
看情况
[解决办法]
学习。
------解决方案--------------------


探讨
但是他是从设计模式就是法律的角度,去强调“保证”。而我要问的是,允许new一个实例(尽管懂得的人都知道不用new而直接调用static的GetInstance方法就行),碍谁蛋疼了呢?

热点排行