当前位置: 首页 > news >正文

上栗县建设局网站天猫招商

上栗县建设局网站,天猫招商,网站建设与维护案例,天眼查官网登录入口单例模式 一、概念 单例模式是一种对象创建型模式#xff0c;使用单例模式#xff0c;可以保证为一个类只生成唯一的实例对象。也就是说#xff0c;在整个程序空间中#xff0c;该类只存在一个实例对象。一个类只能有一个实例在生活中是很常见的#xff0c;比如打印机程…单例模式 一、概念 单例模式是一种对象创建型模式使用单例模式可以保证为一个类只生成唯一的实例对象。也就是说在整个程序空间中该类只存在一个实例对象。一个类只能有一个实例在生活中是很常见的比如打印机程序政府部门。 GoF对单例模式的定义是保证一个类、只有一个实例存在同时提供能对该实例加以访问的全局访问方法。 二、单例模式应用场景 在应用系统开发中我们常常有以下需求 在多个线程之间比如初始化一次socket资源比如servlet环境共享同一个资源或者操作同一个对象在整个程序空间使用全局变量共享资源大规模系统中为了性能的考虑需要节省对象的创建时间等等。 因为Singleton模式可以保证为一个类只生成唯一的实例对象所以这些情况Singleton模式就派上用场了。 三、实现步骤 1、构造函数私有化2、提供一个全局的静态方法全局访问点3、在类中定义一个静态指针指向本类的变量的静态变量指针 四、具体实现 1懒汉式 #include iostream using namespace std;//懒汉式 class Singelton { private://构造函数前面不能加static用指针代替Singelton(){cout Singelton 构造函数执行 endl;} public:static Singelton *getInstance(){if (m_psl NULL){m_psl new Singelton();}return m_psl;}static void FreeInstance(){if (m_psl ! NULL){delete m_psl;m_psl NULL; }}private:static Singelton *m_psl; }; //对静态成员进行初始化 Singelton *Singelton::m_psl NULL;int main(void) {Singelton *p1 Singelton::getInstance();Singelton *p2 Singelton::getInstance();if (p1 p2){cout 是同一个对象 endl;}else{cout 不是同一个对象 endl;}Singelton::FreeInstance();return 0; }运行结果如下 2饿汉式 #include iostream using namespace std;//饿汉式 class Singelton { private:Singelton(){cout Singelton 构造函数执行 endl;} public:static Singelton *getInstance(){return m_psl;}static void FreeInstance(){if (m_psl ! NULL){delete m_psl;m_psl NULL; }}private:static Singelton *m_psl; };//int g_count 0; //饿汉式 Singelton *Singelton::m_psl new Singelton();int main(void) {Singelton *p1 Singelton::getInstance();Singelton *p2 Singelton::getInstance();if (p1 p2){cout 是同一个对象 endl;}else{cout 不是同一个对象 endl;}Singelton::FreeInstance();return 0; }运行结果如下 模式优势劣势懒汉模式延迟加载:首次调用才会创建实例对象1.多线程环境可能出现多重实例2.开销大要使用同步机制来保证线程安全饿汉模式类在加载时就创建好了不存在线程安全问题浪费资源 五、多线程下的懒汉式单例和饿汉式 懒汉模式虽然有优点但是每次调用GetInstance()静态方法时必须判断NULL m_instance使程序相对开销增大。多线程中会导致多个实例的产生从而导致运行代码不正确以及内存的泄露。 C中构造函数并不是线程安全的C中的构造函数简单来说分两步 第一步内存分配第二步初始化成员变量 由于多线程的关系可能当我们在分配内存好了以后还没来得急初始化成员变量就进行线程切换另外一个线程拿到所有权后由于内存已经分配了但是变量初始化还 没进行因此打印成员变量的相关值会发生不一致现象。 所以多线程下建议使用饿汉式如果使用懒汉示则需要加锁同步。 六、案例扩展 创建一个 SingleObject 类。SingleObject 类有它的私有构造函数和本身的一个静态实例。 SingleObject 类提供了一个静态方法供外界获取它的静态实例。SingletonPatternDemo我们的演示类使用 SingleObject 类来获取 SingleObject 对象。
http://www.sczhlp.com/news/250023/

相关文章:

  • 编程一小时网站网站建设将新建用户授权为管理员
  • 湘潭高新区建设局网站如何去掉自豪使用wordpress
  • 整站seo公司浦口区网站建设
  • 2025年优质的仪器计量校准厂家推荐及采购参考
  • 一对一聊天软件源码,jwt登陆校验携带token - 云豹科技
  • 2025年耐用的电加热导热油炉厂家最新权威推荐排行榜
  • 2025年热门的壁挂炉TOP品牌厂家排行榜
  • 2025年比较好的自动化设备工业铝型材优质厂家推荐榜单
  • 网站建设的招标文件广告vi设计是什么
  • 销售网站建设实验报告营销型网站建设模板下载
  • 什么是营销型网站设计微信网站制作北京
  • 外贸平台有哪些比较好 免费公司网站优化推广方案
  • 免费网站建设工具深圳网站设计技术
  • 郑州网站建设公司代运营婚纱摄影在哪个网站找
  • 免费企业网站建立广州旅游景点
  • 网站开发教程 模板网站备案知识
  • 阿芹网站建设百度app官网下载
  • 国外免费psd网站贵阳网站建设搜王道下拉
  • 烟台专门做网站的性价比最高网站建设价格
  • ico交易网站怎么做wordpress 本地
  • 科汛 kesioncms v8.05 企业网站建设入门视频教程wordpress nova主题
  • 档案网站建设优秀代表购物网站建设教程
  • 印刷 网站模板支付宝手机网站支付二维码怎么做
  • 那些网站分享pr做的视频个人网站主页设计
  • 2025年知名的帆布布袋定制厂家推荐及选择建议
  • 2025年专业的钢丝软管由壬定制定做
  • 2025年热门的健康生态红茶厂家推荐及选择建议
  • 2025年优质的除四害权威评测推荐
  • 2025年有实力的员工福利商城优选品牌榜
  • wordpress title修改seo推广是什么工作