构造函数方法很好用,但是存在一个浪费内存 构造函数方法很好用,但是存在一个浪费内存 通过原型法分配的函数是所有对象共享的.通过原型法分配的属性是独立. 如果你不修改属性,他们是共享 如果我们希望所有的对象使用同一一个函数,最好使用原型法添加函数,这样比较节省内存. 例子: // 构造函数模式为Cat ...
分类:
Web程序 时间:
2016-09-19 10:07:34
阅读次数:
221
一. 懒汉模式-线程不安全 问题1: 为什么单例模式的实例要设置为静态的?从语义上讲,类的静态成员变量是所有对象共享的,而单例模式就是为了让该类所有实例共享同一个对象。从语法上讲,常见的单例模式都是通过一个静态方法返回其单例,而静态方法的内部不能直接使用非静态变量。问题2:为什么getInstanc ...
分类:
其他好文 时间:
2016-09-11 10:20:08
阅读次数:
115
问题1: 为什么单例模式的实例要设置为静态的?从语义上讲,类的静态成员变量是所有对象共享的,而单例模式就是为了让该类所有实例共享同一个对象。从语法上讲,常见的单例模式都是通过一个静态方法返回其单例,而静态方法的内部不能直接使用非静态变量。问题2:为什么getInstance要设置成静态函数?静态方法 ...
分类:
其他好文 时间:
2016-09-11 09:07:57
阅读次数:
128
用来尽可能减少内存使用量,适用于存在大量重复对象的场景,达到对象共享,避免创建过多对象的效果,提升性能,避免内存溢出。 定义: 使用共享对象有效支持大量细粒度对象。 适用场景: 亨元模式其实是通过集合来缓冲对象,获取的时候,先判断集合里面是否存在该对象,如果有就取出来,没有创建新的,避免不必要的对象 ...
分类:
其他好文 时间:
2016-09-11 01:40:25
阅读次数:
226
哪些函数不能被继承: 构造函数、析构函数、拷贝构造函数、赋值操作符重载函数(赋值构造函数) 哪些函数不能为虚函数:(定义虚函数一般是为了使用多态性质) 普通函数(非成员函数):不属于类的成员,不能用于多态,只能被重载。 静态成员函数:静态成员函数属于类的信息,被所有对象共享,不归某个对象所有,没有动 ...
分类:
其他好文 时间:
2016-09-07 22:36:38
阅读次数:
193
原理 一个对象的状态在对象被创建之后就不再变化,这就是所谓的不变模式。 不变模式的结构 不变模式可增强对象的强壮型(robustness)。不变模式允许多个对象共享某一个对象,降低了对该对象进行并发访问时的同步化开销。如果需要修改一个不变对象的状态,那么就需要建立一个新的同类型对象,并在创建时将这个 ...
分类:
其他好文 时间:
2016-08-27 15:27:44
阅读次数:
117
十、享元模式
享元模式(Flyweight Pattern)顾名思义,就是多个对象共享一个对象,即共用一个内存地址,在实际应用中,采用享元模式的好处就是可以大大节约内存空间,提高系统的运行效率。享元模式经常会出现在工厂模式当中,下面是具体的实现代码:
首先创建一个享元类:
public abstract class Flyweight {
public abstrac...
分类:
编程语言 时间:
2016-08-22 16:18:09
阅读次数:
163
http://blog.csdn.net/leonard_wang/article/details/8159583 教科书上面对C++虚基类的描述玄而又玄,名曰“共享继承”,名曰“各派生类的对象共享基类的的一个拷贝”,其实说白了就是解决多重多级继承造成的二义性问题。例如有基类B,从B派生出C和D,然 ...
分类:
编程语言 时间:
2016-08-22 13:50:21
阅读次数:
368
共享数组 共享数组的行为类型于共享指针。关键不同在于共享数组在析构时,默认使用delete[]操作符来释放所含的对象。因为这个操作符只能用于数组对象,共享数组必须通过动态分配的数组的地址来初始化。共享数组对应的类型是boost::shared_array,它的定义在boost/shared_arra ...
分类:
其他好文 时间:
2016-08-13 21:09:29
阅读次数:
185
Static是C++中一个常见的关键字,它被用来控制变量的存储方式和可见性。 在类定义中,它的成员(包括数据成员和成员函数)可以用关键字static申明为静态成员。静态成员的特性是不管这个类创建了多少个对象,它其中的静态成员只有一个拷贝,这个拷贝被所有属于这个类的对象共享。 从原理来分析,我们能... ...
分类:
编程语言 时间:
2016-08-04 14:59:57
阅读次数:
241