随笔分类 - 面对对象编程
摘要:一、Active Record(活动记录)模式 Active Record是业务逻辑层中(《企业应用架构模式》将该模式归为数据源模式)常用的一种框架模式,尤其在底层数据库模型匹配业务模型时它特别有用,它是一种以数据库驱动为主的框架模式。 通常,数据库中的每张表都对应一个业务对象。业务对象表示表中...
阅读全文
摘要:一、定义 不应该强迫客户程序依赖并未使用的方法二、接口污染 接口污染,在C#、C++这样的静态类型语言中是很常见的。一个接口会被他不需要的方法污染。在接口中假如一个方法只是为了能给它的一个子类带来好处。若持续这样做的话,那么每次子类需要一个新方法时,这个方法就会加到基类中去。这会进一步污染基类的...
阅读全文
摘要:一、定义 1.高层模块不应该依赖低层模块,二者都应该依赖抽象 2.抽象不应该依赖于细节。细节应该依赖于抽象二、层次化 1.简单介绍 结构良好的面向对象架构都具有清晰的层次定义,每个层次通过一个定义良好的、受控的接口向外提供了一组内聚的服务。 对于这个陈述的简单理解可能会致使设计者设计出类似...
阅读全文
摘要:一、定义 子类型必须能替换掉它们的基类型二、提取公共部分的方法代替继承 如果一组类都支持一个公共的职责,那么它们应该从一个公共的超类继承该职责。 如果公共的超类不存在,那么就创建一个,并把公共的职责放入其中。毕竟,这样一个类的有用性是确定无疑的。 然而稍后对系统的扩展也许会假如一个新的子类,该子...
阅读全文
摘要:一、定义 软件实体(类、模块、函数等)应该是可以扩展的,但是不可修改。 如果正确的应用了OCP原则,那么 以后在进行同样的改动时,就只需要添加新的代码,不必修改已经正常运行的代码。二、OCP概述 1.对于扩展是开放的 这意味着模块的行为是可以扩展的。当应用的需求改变时,我们可以对模块进行扩展...
阅读全文
摘要:一、定义 一个类应该只有一个发生变化的原因。二、为什么要使用SRC 因为每一个职责都是变化的一个轴线。当需求变化时,这种变化就会反映为类的职责的变化。如果一个类承担了多于一个的职责,那么引起它变化的原因就会有多个。 如果一个类承担的职责过多,就等于把这些职责耦合在了一起。一个职责的变化可能会消...
阅读全文
摘要:一.设计臭味1.僵化性 僵化性是指难以对软件进行改动,即使是简单的改动。如果单一的改动会导致有依赖关系的模块中的连锁改动,那么设计就是僵化的。改动时,必须要改动的模块越多,设计就越僵化。2.脆弱性 脆弱性是指,在进行一个改动时,可能会导致程序的许多地方出现问题。常常是,出现新问题的地方与改动的地...
阅读全文