单例模式 demo

// 用单例模式实现自定义颜色类
    public class MyColor
    {
        private static MyColor _redColor = null;
        public static MyColor GetRedColor()//获取红色实例
        {
            if( null == _redColor )
            {
                _redColor = new MyColor();
                _redColor.color = new Color(1f, 0f, 0f, 1f);
            } 
            return _redColor;
        }
        public Color color{ get; set; }
        private MyColor ()
        {
        }
    }
// ------------------------------------------------------------------------------
//  <autogenerated>
//      This code was generated by a tool.
//      Mono Runtime Version: 4.0.30319.1
// 
//      Changes to this file may cause incorrect behavior and will be lost if 
//      the code is regenerated.
//  </autogenerated>
// ------------------------------------------------------------------------------
using System;
using UnityEngine;
using System.Collections.Generic;
namespace AssemblyCSharp
{
    // 单例模式 实现获取鼠标点击的位置
    public class MyMousePosition
    {
        static MyMousePosition _mousePos = null;//定义一个静态实例
        public static MyMousePosition GetMousePosition() //获取一个静态实例
        {
            if( null == _mousePos )
            {
                _mousePos = new MyMousePosition();    
            }
            return _mousePos;
        }
        public List<Vector3> clickList = null;//用一个list 集合来存储 点击坐标的位置
        
        public void InsertPosition(Vector3 v)// 加入一个点的坐标位置
        {
            clickList.Add (v);
        }
        private MyMousePosition ()//构造函数 私有化
        {
            clickList = new List<Vector3>();
        }
        
        public void printPosition()//输出坐标点击位置
        {
            foreach( Vector3 itm in clickList )
            {
                Debug.Log ( itm.ToString() );
            }
        }
    }
}

设计模式的本质是为了避免设计的改动造成代码的重写。所谓重构就是根据代码优化设计。而现在的主流已经淡化了设计和编码的界限。设计就是编码,编码就是设计。程序中没有那些为了实现设计意图而出现的硬编码,程序代码本身既是体现架构师设计意图的说明也是直接可以运行的程序。这是设计模式消亡的根本原因。

主要优点:

1、提供了对唯一实例的受控访问。

2、由于在系统内存中只存在一个对象,因此可以节约系统资源,对于一些需要频繁创建和销毁的对象单例模式无疑可以提高系统的性能。

3、允许可变数目的实例。

主要缺点:

1、由于单利模式中没有抽象层,因此单例类的扩展有很大的困难。

2、单例类的职责过重,在一定程度上违背了“单一职责原则”。

3、滥用单例将带来一些负面问题,如为了节省资源将数据库连接池对象设计为的单例类,可能会导致共享连接池对象的程序过多而出现连接池溢出;如果实例化的对象长时间不被利用,系统会认为是垃圾而被回收,这将导致对象状态的丢失。

原文地址:https://www.cnblogs.com/lihonglin2016/p/4321480.html