软件设计
John_Lan_2008
这个作者很懒,什么都没留下…
展开
-
Singleton Pattern
Singleton Pattern 的两种实现对比Single check 对对象创建锁保护Double check #include <iostream>#include <mutex>#include <chrono>#include <ctime>#define DOUBLE_CHECK (1)using std::chrono::system_clock;us原创 2018-01-03 10:53:08 · 248 阅读 · 0 评论 -
Singleton Pattern 改进
对上Singleton Pattern的两个改进1. 实例创建条件(instance_ == 0)可能会被编译器优化存储在寄存器中,导致缓存不一致。一个线程对instance的修改没有反映到其他线程的副本中,这样不能防止多次初始化。因此,要使用volatile关键字。2. 每个需要实现Singleton Pattern的类,会有代码冗余,可以使用模板适配需要实现Singleton Pattern的原创 2018-01-03 13:38:13 · 191 阅读 · 0 评论 -
C++ 智能指针简单实现
C++标准库中定义智能指针shared_ptr< T >类型,内部使用了引用计数的方式执行内存的垃圾回收。本文实现一个简单的智能指针,探究内部实现方式。#include <iostream>using namespace std;template <typename T>class SmartPtr;template <typename T>class U_Ptr // 辅助类 {pri原创 2017-12-18 09:40:54 · 291 阅读 · 0 评论 -
学习笔记-设计模式之iterator
迭代器模式: iterator.h#ifndef ITERATOR_H#define ITERATOR_Htypedef int DATA;class Iterater;// 容器的抽象基类class Aggregate{public: virtual ~Aggregate(){} virtual Iterater* CreateIterater(Aggregate *pAg转载 2016-03-16 20:40:21 · 507 阅读 · 0 评论 -
c++ template 笔记(1) - Policy(一)
# -*- coding: utf-8 -*-"""Spyder EditorThis is a temporary script file."""class BinaryTree: def __init__(self, value): self._value = value self._parent_node = None s原创 2018-02-02 14:12:25 · 372 阅读 · 0 评论