摘要: 读几本书:《算法》《代码大全》《深入理解计算机系统》《编译原理》完成几件事:通过系统架构师认证考试搬入自己的窝待续。。。 阅读全文
posted @ 2015-12-30 22:07 让代码飞一会儿 阅读(118) 评论(0) 推荐(0) 编辑
摘要: 区分接口继承和实现继承类包含的成员函数种类1.静态函数2.非静态函数 2.1 普通函数(非虚) non-virtual 2.2 虚函数 2.2.1 纯虚函数 pure-virtual 2.2.2 非纯虚函数 impure-virtual一、接口继承继承类必须要实现声明为pure-virtual的函数,意味每个继承类的特异化实现二、实现继承继承类如有需要可以覆写(override)基类的impure-virtual函数,当不覆写时将使用基类提供的默认实现三、普通非虚函数继承类不应声明实现此类函数,否则该继承类将隐藏基类的实现。此类函数的意义就是强制所有继承类都使用基类的实现。例子... 阅读全文
posted @ 2014-01-21 14:56 让代码飞一会儿 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 接口容易被正确使用,不易被误用c++简单工厂模式时,初级实现为ITest* CreateTestOld(), 然后用户负责释放返回的对象。如果忘记释放就会造成memory leak,所以在设计工厂接口时就应屏蔽这个潜在的问题,这时就可以用智能指针shared_ptr CreateTest(),由他负责对象资源的管理,而对客户端的使用来说更简洁了。 1 #include "stdafx.h" 2 #include 3 #include 4 using namespace std; 5 6 class ITest 7 { 8 public: 9 virtual void Fun 阅读全文
posted @ 2014-01-21 11:01 让代码飞一会儿 阅读(696) 评论(0) 推荐(1) 编辑
摘要: 生活中的大好事3月份在已经买车准备上外地牌照时中签了,有了人生第一辆小汽车。京牌啊!!5月份回老家举行了婚礼,毕生难忘~!6月经过很多波折,托关系找人终于买上了一套92平的小房,也算是有家了。当然是首付+贷款,坑爹的开发商不让公积金和商业混合贷款(可惜的是要15年年中才能收房)9月份的中秋节前后带着媳妇去了大马的沙巴岛度蜜月,回来后决定努力赚钱争取每年都能出去玩一次~工作的事上一家公司把我所在的部门卖了,成立了另一个集团下的小公司。各种原因及纠结下,没有狠下心来趁此机会换个工作环境。一大后悔的事。工作上按部就班,没有多少改变,唯一变化的就是从一个小程序员由于在岗位上多年的业务经验升职为开发经理 阅读全文
posted @ 2014-01-07 10:59 让代码飞一会儿 阅读(1182) 评论(7) 推荐(0) 编辑
摘要: c++沉思录中的一个例子.思路:由图所示, 将节点的概念用类表示.相同点:每个节点存储一个值以及一些节点 继承不同点:值的种类, 存储节点的数量 动态绑定进一步:3种节点类型1.只有一个数值, 无子节点2.一元运算符, 一个子节点3.二元运算符, 两个子节点针对每种类型的节点,都需要进行打印动作不同的事物,具有相同的界面(接口), 意味着需要使用动态绑定.下一步:考虑到3种节点类型之间均没有 "is-a"的关系, 所以需要创建公共抽象基类ExprNodeclassExprNode{ friendstd::ostream&operator<<(std::o 阅读全文
posted @ 2013-06-09 16:51 让代码飞一会儿 阅读(846) 评论(0) 推荐(0) 编辑
摘要: 模板方法: 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中.模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤.当我们要完成在某一细节层次一致的一个过程或一些列步骤,但其个别步骤在更详细的层次上的实现可能不同时,通常考虑用模板方法来处理.算法步骤固定,但其中某个或某些步骤会发生变化时,将变化的步骤抽象, 由子类去实现.而策略模式是客户端对不受(或较少受到)算法间的切换的影响.针对的是不同的算法.View Code 外观模式:为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用.1.在设计初期阶段,应该要有意识的将不同的两 阅读全文
posted @ 2013-02-22 11:21 让代码飞一会儿 阅读(350) 评论(0) 推荐(0) 编辑
摘要: 原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象.涉及到对深复制浅复制的理解.View Code 1 class Uncopyable 2 { 3 protected: 4 Uncopyable(){} 5 ~Uncopyable(){} 6 7 private: 8 Uncopyable(const Uncopyable&); 9 Uncopyable& operator=(const Uncopyable&);10 };11 12 template<class T>13 class IClonea... 阅读全文
posted @ 2013-02-21 10:48 让代码飞一会儿 阅读(139) 评论(0) 推荐(0) 编辑
摘要: 代理模式:为其他对象提供一种代理以控制这个对象的访问.1.远程代理- .net中的webservice 客户端引用webservice服务时,生成的webreference就是代理模式应用2.虚拟代理- 浏览器加载页面中的图片资源时,通过代理获得图片基本大小信息.3.保护代理- 操作系统对内核的权限保护4.智能指针- 原始变量的引用计数View Code 1 class Subject 2 { 3 public: 4 virtual void Request() = 0; 5 }; 6 7 class RealSubject : public Subject 8 { 9 p... 阅读全文
posted @ 2013-02-20 15:57 让代码飞一会儿 阅读(490) 评论(0) 推荐(0) 编辑
摘要: 装饰模式是为已有功能动态地添加更多功能的一种方式. 当系统需要新功能的时候,是向旧系统中添加新的代码.这些新加的代码通常装饰了原有类的核心职责或主要行为.这样的结果等同于在主类中加入新的字段,新的方法和新的逻辑,从而增加了主类的复杂度,而这些新加入的东西仅仅是为了满足一些只在某种特定情况下才会执行的特殊行为的需要. 装饰模式把每个要装饰的功能放在单独的类中,并让这个类包装它所要装饰的对象,因此,当需要执行特殊行为时,客户代码就可以在运行时根据需要有选择地,按顺序地使用装饰功能包装对象了. 优点: 把类中的装饰功能从类中搬移去除,这样可以简化原有的类. 有效地把类的核心职责和装饰功能区分开了.. 阅读全文
posted @ 2013-02-06 13:18 让代码飞一会儿 阅读(346) 评论(0) 推荐(0) 编辑
摘要: 书摘:面向对象的编程,并不是类越多越好,类的划分是为了封装,但分类的基础是抽象,具有相同属性和功能的对象的抽象集合才是类。策略模式:定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。优点,(1)减少同类的各种算法与使用算法类之间的耦合(2)简化单元测试,使每个算法都有自己的类,可以通过自己的接口单独测试。(3)对某种算法的修改,或添加新的算法,不影响现有算法类。在分析问题时,出现了需要在不同时间应用不同的业务规则,就可以考虑使用策略模式。此时可以与创建型的模式结合起来效果更好。感悟:简单工厂将类的对象(实例)的创建职责从客户端和类自身中解耦出来 阅读全文
posted @ 2013-02-05 17:23 让代码飞一会儿 阅读(184) 评论(0) 推荐(0) 编辑