摘要:
一. 里氏代换原则定义:子类型必须能够替换它们的父类型。[DH]解释:也就是说,在软件里面,把父类都替换成子类,程序的行为没有变化。也只有这样父类才能真正被复用,而子类也能够在父类的基础上增加新的行为。这个原则是对继承的一个约束,也就是说,继承中子类严格满足"is-a"的关系。所以,当你看到一个继承的时候,要习惯性的把他的父类和子类看成一个整体,这样会有助于你去理解各个类之间的关系。由于里氏代换的原则,才使得开放-封闭成为了可能。正是由于子类型的可替换性才使得父类类型的模块在无需修改的情况下就可以扩展。例如:这个继承关系就不满足里氏代换原则。二. 单一职责原则定义:就一个类 阅读全文
摘要:
一. 问题在面向对象系统的分析与设计过程中经常会遇到这样一种情况:对于某一个业务逻辑(算法实现)在不同的对象中有不同的细节实现,但是逻辑(算法)的框架(或通用的应用算法)是相同的。Template提供了这种情况的一个实现框架。二. 模式Template 模式是采用继承的方式实现这一点:将逻辑(算法)框架放在抽象基类中,并定义好细节的接口,子类中实现细节。三. 代码[cpp] view plaincopy//抽象基类,实现了一个模板方法classAbstractClass{public:virtual~AbstractClass(){}//模板方法,只在抽象基类中实现voidTemplateMe 阅读全文
摘要:
一. 类类图分三层:第一层是类的名称,如果是抽象类,则用斜体显示。第二层是类的特性,通常就是字段和属性。第三层是类的操作,通常是方法或行为。注意 '+' 表示 public,'-' 表示 private,'#' 表示 protected 。[cpp] view plaincopyclassAnimal{public:voideat();voidbirth();public:boollief;};二. 继承关系继承关系用 空心三角 + 实线 来表示。三. 聚合关系聚合关系表示一种 弱 的 “拥有” 关系,体现的是A对象可以包含B对象,但B对象不是A 阅读全文
摘要:
一.概念单例模式:其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。[cpp] view plaincopyclassCSingleton{//公有的静态方法,来获取该实例public:staticCSingleton*GetInstance(){if(m_pInstance==NULL)//判断是否第一次调用m_pInstance=newCSingleton();returnm_pInstance;}//私有构造函数,防止实例化private:CSingleton(){};//私有静态指针变量,指向类的唯一实例private:staticCSinglet 阅读全文
摘要:
1. 聚合:是关联关系的一种特例,体现的是整体与部分拥有的关系,即 has-a 的关系,此时整体与部分之间可以分离。[cpp] view plaincopy//学校classSchool{};//学生classStudent{private:School*ps;};可以看到 Student 类中包含了一个 School 类的对象指针,而且在创建一个Student 类对象时一定要对指针进行初始化,就好像当你上学时一定会有一个学校!这个时候,我们可以说 Student 的每一个对象都有一个School 的属性来标识它是属于哪个学校的!但是两者之间并不存在“同生共死”的关系,也就是说当这个学生不存在 阅读全文