类的设计原则

刚接触设计模式的时候我就被它的优雅给吸引了,发现原来代码还可以这样写,当时的我入了迷。

记得看的第一本设计模式的书籍叫《大话设计模式》,当时的我还不能完全理解里面的思想,但并不妨碍我被它的优雅给吸引,这本书我看了3遍,直到现在感觉还是有点乱,在这整理一下自己的思路,加深一下自己的理解。

类的设计原则:


开闭原则:在面对对象设计的中,应该遵循对扩展开放,对修改关闭。

开闭原则实现方法:

为了满足开闭原则,我们这软件设计中应该将不变的部分抽象出来,定义成不变的接口(或抽象类),模块之间调用通过抽象接口进行,这样即使实现层发生变化,调用代码也不需要改变,接口是不变的是可以复用的,简单的说就是基于接口(抽象)编程

单一职责原则:在类的设计过程中,只能让一个类有且只有一个职责。

为什么一个类不能多余一个以上的职责?

当一个类拥有多个职责的时候,也就意味着有多个原因会引起该类的改变,而这种变化会影响到该类不同职责的使用者:

1.当类的一个职责需要包含其他外部类的时候,该类的另外一个职责的使用者就不得不包还这个外部类

2.当类的一个职责改变,而该类的另外一个职责的使用者也不得不重新编译这个类

职责划分

单一职责其实从字面去理解非常容易,但在实际的设计过程中,并不是那么容易对职责进行划分。

首先我尝试用一句话来概括这个类的职责,在语句中不要包括或、且、和之类的字眼,然后考虑这个类是否存在多个原因引起他的改变

接口分离原则:接口的设计应该遵循最小接口原则,不要把用户不需要的方法放到同一个接口里

依赖倒置原则:高级模块不应该依赖低级模块,应该依赖抽象,抽象不应该依赖于细节,细节应该依赖抽象

里氏替换原则:子类应该可以替换掉父类出现的任何地方,或者说我们将代码中所有出现父类的地方替换成子类,代码仍然可以正常运行

类的设计原则

时间: 2024-10-13 16:44:20

类的设计原则的相关文章

项目设计之---------- 类的设计原则

类的设计最好遵循5大原则,1.单一指责原则,2.开放封闭原则,3.liskov替换原则,4.依赖倒置原则(抽象不应依赖于具体,相反,具体应该依赖于抽象),5.接口隔离原则(就是接口细分,一个接口内的方法应该是用户都需要的).具体参考<敏捷软件开发>第2部分(第98页) 类的设计估计要用到许多模式,注意参考各种设计模式,具体参考<设计模式>.<大话设计模式>.<敏捷软件开发>等都有说到 项目设计之---------- 类的设计原则

13.10类的设计原则

内聚性 类应该描述一个单一的实体,而所有的类操作应该在逻辑上相互配合,支持一个一致的目的. 一致性 遵循标准Java程序设计风格和命名习惯. 封装性 一个类应该使用private修饰符隐藏其数据,以免用户直接访问. 清晰性 为使设计清晰,内聚性.一致性和封装性都是很好的设计原则. 完整性 实例和静态 依赖与类的具体实例的变量或方法必须是一个实例白能量或方法.如果一个变量被类的所有实例所共享,那就应该将他声明为静态的. 继承与聚合 集成和聚合之间的差异,就是is-a(是一种)和has-a(具有)之

Python 类的设计原则

# 面向对象遵循的原则: SOLID # S(Single Responsibility Principle) # 单一职责原则 # 一个类只负责一项职责 # 好处 # 易于维护, 写出高内聚的代码 # 易于代码复用 # 案例 # 我们之前写的计算器类 # 假设只包含加减乘除运算和结果打印 # 如果往后需要增加, 结果写入文件, 结果参与其他运算, 结果上传服务器... # 是不是每一次都需要去修改此类? 就导致这个类变得特别臃肿; 不利于维护和部分代码复用 # 解决方案 # 计算器只包含, 加

java类的设计原则

1.内聚性 类应该描述一个单一的实体,所有的类操作应该在逻辑上相互配合,支持一个连贯性的目标.例如:学生和教职工属于不同的实体,应该定义两个类. 2.一致性 要遵循一定的设计风格和命名习惯.给类.方法.数据域选择有信息量的名字.流行的风格是将数据声明置于构造方法之前,并将构造方法置于方法之前. 选择的名字要保持一致,给类似的操作选择不同的名字并非好的习惯. 如果不想让用户创建类的对象,可以在类中声明一个私有的构造方法. 3.封装性 用private修饰符隐藏其数据域,以免用户直接访问.如果想让数

《转》面向对象类设计原则

面向对象类的设计原则 1                 SRP(单一职责原则) 这个原则看起来很简单,就是说一个类只能承担一个职责. 但这里有一个关键:"职责"是如何理解的? 按照汉语的理解,职责其实分为两部分:"职"和"责"."职"就是这个类是什么,而"责"就是这个类要干什么. 举个例子来说:Door是一个对象,那么它的"职"就是门,"责"就是"开门.关

*javascript开发的设计原则和设计模式

 设计原则(7种):   之所以有这么多的原则来指导我们进行程序的设计和开发,是因为我们的程序存在未知的改变.为了以最低的代价拥抱这种未知的变化,前辈们给我们总结了这么多原则. ①YAGNI原则you aren't gonna need it 不要写不需要的代码 ②KISS原则keep it simple and stupid代码保持简介和具有表现力语义话的标记.注释.变量或者方法的命名.减少嵌套 ③DRY原则Don't Repeat Yourself模块的封装提高代码的复用率 降低测试难度 方

java设计原则:16种原则

一   类的设计原则   1 依赖倒置原则-Dependency Inversion Principle (DIP) 2 里氏替换原则-Liskov Substitution Principle (LSP) 3 接口分隔原则-Interface Segregation Principle (ISP) 4 单一职责原则-Single Responsibility Principle (SRP) 5 开闭原则-The Open-Closed Principle (OCP) 二  包的设计原则   6

Java六大设计原则

类的设计原则 依赖倒置原则-Dependency Inversion Principle (DIP) 里氏替换原则-Liskov Substitution Principle (LSP) 接口分隔原则-Interface Segregation Principle (ISP) 单一职责原则-Single Responsibility Principle (SRP) 开闭原则-The Open-Closed Principle (OCP) 一. Dependency Inversion Princ

(精)分包原则/包的设计原则/组件(包)设计原则

http://blog.csdn.net/it_man/article/details/38292925 组件,或者叫程序集,是指一种能够被独立部署的二进制单元,一般是以DLL的形式存在的.针对大型的软件系统,良好的组件设计能够把系统分解为一些小的组件,从而使每个开发团队都可以只关注单个的组件而无需关心整个系统. 组件设计需要遵守如下原则: 重用-发布等价原则(REP) 即重用粒度就是发布粒度.一个组件中的类要么都是可以重用的,要么就都不可以重用. 共同重用原则(CRP) 一个组件中的所有类应该