摘要: Facade外观模式,也是比较常用的一种模式,基本上所有软件系统中都会用到。 GOF 在《设计模式》一书中给出如下定义:为子系统中的一组接口提供一个一致的界面, Facade 模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。简单说,就是将复杂的逻辑封装起来,对外公开简单的接口,由客户程序 阅读全文
posted @ 2017-04-28 22:37 弗莱曼飞侠 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 代理,说白了就是中介。假设有俩对象A和B,A想访问B,但是根据迪米特法则,我们不能喝陌生人说话,简而言之就是A要减少知道B的相关情况,要降低A与B的耦合度。这时我们使用中介C,而C拥有B的相关情况,A通过C来访问B。 下面我们使用一个案例来说明代理模式: 类图: 运行结果: 阅读全文
posted @ 2017-04-28 21:35 弗莱曼飞侠 阅读(391) 评论(0) 推荐(0) 编辑
摘要: C++中,使用预处理宏存在俩问题: (1).宏看起来像一个函数调用,但不总是这样,这样就隐藏了难以发现的问题(这个问题在C中也存在) (2).这个问题是C++特有的:预处理器不允许访问类的成员数据。这意味着预处理器宏不能用作类的成员函数。 为了保持预处理器宏的效率又增加安全性,而且还能像一般成员函数 阅读全文
posted @ 2017-04-28 20:33 弗莱曼飞侠 阅读(178) 评论(0) 推荐(0) 编辑
摘要: tatic关键字有俩作用:(1).控制存储分配;(2).控制一个名字的可见性和连接。 随着C++名字空间的引入,我们有了更好的,更灵活的方法来控制一个大项目的名字增长。 在类的内部使用static是在全程序中控制名字的另一种方法。这些名字不会与全局名冲突,并且可见性和访问也限制在程序内部,使得在维护 阅读全文
posted @ 2017-04-28 19:41 弗莱曼飞侠 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 如果想要一个函数来获取程序的优先权(int priority()),另一个函数用来处理在某些动态分配所得到的资源进行优先权的处理(void processWidget(std::trl::shared_ptr<Widget> pw, int priority)) 由于资源获取就是初始化,根据第13条 阅读全文
posted @ 2017-04-28 19:39 弗莱曼飞侠 阅读(153) 评论(0) 推荐(0) 编辑
摘要: std::string* stringPtr1=new std::string; srd::string* stringPtr2=new std::string[100]; 对应地 delete也应该使用相同的形式: delete stringPtr1; delete [] stringPtr2; 阅读全文
posted @ 2017-04-28 19:38 弗莱曼飞侠 阅读(166) 评论(0) 推荐(0) 编辑