码迷,mamicode.com
首页 > 编程语言 > 详细

C++设计模式 之 “对象性能” 模式:Singleton、Flyweight

时间:2015-11-25 21:56:38      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:

  “对象性能”模式
  面向对象很好地解决了“抽象”的问题,但是必不可免地要付出一定的代价。对于通常情况来讲,面向对象的成本大都可以忽略不计。但是某些情况,面向对象所带来的成本必须谨慎处理。

  典型模式
  # Singleton
  # Flyweight

  Part 1 单件模式(单例模式

  动机
  #在软件系统中,经常有这样一些特殊的类,必须保证它们在系统中只存在一个实例,才能确保他们的逻辑正确性、以及良好的效率。
  #如何绕过常规的构造器,提供一种机制来保证一个类只有一个实例?
  #这应该是类设计者的责任,而不是使用者的责任。

  模式定义
  保证一个类仅有一个实例,并提供一个该实例的全局访问点。——《设计模式》GoF

  代码

class Singleton
{
    private static Singleton instance;
    private static readonly object syncRoot = new object();
    
    public static Singleton GetInstance()
    {
        if(instance == null)
        {
            lock (syncRoot)
            {
                if(instance == null)
                    instance = new Singleton();
            }
        }
        
        return instance;
    }
    
    private static Singleton instance() {}
}

  结构
  技术分享

  要点总结
  # Singleton 模式中的实例构造器可以设置为 protected 以允许子类派生。
  # Singleton 模式一般不要支持拷贝构造函数和 Clone 接口,因为这有可能导致多个对象实例,与 Singleton 模式的初衷违背。
  #如何实现多线程环境下安全的 Singleton ? 注意对双检查锁的正确实现。

 

C++设计模式 之 “对象性能” 模式:Singleton、Flyweight

标签:

原文地址:http://www.cnblogs.com/fengyubo/p/4995836.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!