摘要: 概要什么是所谓的替换原则?开发中我们通常会通过继承实现一些子类来达到功能的扩展,比如假设我们有基类B,有个B类型的指针或引用作为某个函数的参数,这时我们创建了子类C继承于B,如果当把指向C类对象的指针作为参数传递时,出现了一些意料之外的异常时,它就违反了LSP。说的有点抽象,到实例再具体说明。目的子类类型完全能替换基类类型而不会发生异常实例与效果举个LSP经典的例子来说明下吧。比如我们有个Rectangle,可以设定长和宽,同时可以计算它的面积,我们还有正方形的需求,所以我们创建一个Square类,继承于Rectangle。具体实现如下:class Rectangle { public: .. 阅读全文
posted @ 2012-03-31 16:53 MXi4oyu 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 概要何谓开放关闭,其实就是对扩展是开放的,对修改是关闭的。前半句好理解,后半句什么意思?进一步说明,就是扩展的同时对固有既定模块是不需要再修改的,如果还要问什么是固有既定模块,抱歉,文字还真不好解释,到后面穿插实例再来说明吧。目的对扩展开发,对修改关闭实例与效果先看个例子,比如我们需要一个封装访问MySql数据库的类。定义一些数据库操作API供外部调用,代码和类图如下所示:class Database { public: void connect(); void execute(); void commit(); void rollback(); };然后你兴致勃勃地开... 阅读全文
posted @ 2012-03-31 08:41 MXi4oyu 阅读(215) 评论(0) 推荐(0) 编辑