随笔分类 - C++设计模式
摘要:由于需求的变化,需要创建对象的具体类型也需要变化,通过new来创建对象会导致紧耦合,通过工厂方法,可以避免这种紧耦合。 1、问题 多个类型的文件分割器,在new的时候依赖具体类型,该如何避免呢? 2、使用工厂模式 定义抽象类和工厂基类 为每个分割器,创建具体类和具体工厂 MainForm不再依赖于具
阅读全文
摘要:在软件构建过程中,需要为某些对象建立一种通知依赖关系:一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者)都将得到通知。 1、如下是一个文件分割器的伪码,分为两部分,MainForm中设置文件路径及分割的次数,在成员函数中,生成分割器并调用分割器;FileSpliter为文件分割类。 2、需
阅读全文
摘要:单例模式中,一个类只能有一个实例 一、实现 将默认构造函数、拷贝构造设为私有; 通过静态成员变量和静态成员函数来生成、获取单个实例。 二、线程安全 上述例子对于单线程没问题,但对于多线程可能会出错(某个线程在生成实例时,其他线程也可能进入并生成实例)。 1、一种办法是加锁,但代价较高:当只是读取实例
阅读全文