使用性的单例模式,项目中应用

  • 实现阶段进阶:

如果查看书本上单例模式,简单一句话,都是如何实现。

并且实现务必有 Class.GetInstance() 的语句。这种方式的缺点还一个就是代码的可读性受影响; 原因区别于非单例的代码new Class();

并且对于库的引用者的视角需要明白单例一说。

那么如何解决这个问题呢?

封装

(使用SingleInterface 封装SingleTon)


    public class SingleTon
    {
        private static int fieldNumber;

        public int FieldNumber
        {
            get { return fieldNumber; }
            set { fieldNumber = value; }
        }

        private SingleTon()
        {
        }

        private static SingleTon instence;

        public static SingleTon GetInstance()
        {
            if (instence == null)
            {
                instence = new SingleTon();
            }
            return instence;
        }

        public void MethodA()
        {
            Console.WriteLine("SingleTon :{0}", fieldNumber++);
        }
    }


    public class SingleInterface
    {
        private SingleTon singleClent;
        public SingleInterface()
        {
        }

        public void Initialize()
        {
            singleClent = SingleTon.GetInstance();
        }

        public void MethodA()
        {
            singleClent.MethodA();
        }
    }


  • 实用阶段


如果不做处理 这种方式只能应用于,单进程中;

唯有将所有引用单例的库或应用  只能运行与一个可执行文件中。原因:操作系统给每个进程分配单独的内存块;

如果EXEa.exe和EXEb.exe 通过引用的方式加载单例库,不能实现单例的作用。

解决办法:

模式结合;结合SOA; 将单例独立成服务。



你可能感兴趣的:(使用性的单例模式,项目中应用)