设计原则20170710

一、单一职责原则

一个类或一个函数只做一件事情

二、里氏替换原则

所有父类出现的地方,子类都可以替换(在类中调用其他类务必要使用父类或者接口)

采用里氏替换原则的目的就是增强程序的健壮性

三、依赖倒置原则

也就是面向接口编程

四、接口隔离原则

接口隔离原则是对接口进行规范约束,尽量使用多个专门的接口(专门的接口是指:提供给每个模块的都应该是单一的接口,提供给几个模块就应该有几个接口),而不是建立一个庞大的臃肿的接口

五、迪米特原则

要求类与类之间尽可能没有耦合关系(低耦合)。

具体要求:

1.一个类应该对自己需要耦合或调用的类知道的最少(即提供方的public方法尽量少)。只需知道你(被耦合或调用的类)提供的public方法,至于你内部如何复杂和我没关系,我也不关心。

2.一个类只和朋友类交流,

朋友类定义:出现在成员变量,方法的输入输出参数中的类称为成员朋友类,而出现在方法内部的类不属于朋友类

六、开闭原则(最基础也是最核心的原则,前面五种原则都是开闭原则的具体形态)

1.含义:(模块、抽象、类和方法等软件实体)对扩展开放,对修改关闭

扩展含义:(一般通过子类或实现接口)扩展

修改含义:修改已有的代码

2.开闭原则可以提高复用性,也是面向对象的要求

3.具体如何应用开闭原则:

一般通过实现接口或继承抽象类(继承实现类也可以,通过子类覆写方式)来扩展,不修改已有的代码,软件实体上层保持不变,这样风险就小了

1).抽象约束

通过接口或者抽象类约束一组可能变化的行为,实现对扩展开放

包含三层含义:

I.通过接口或者抽象类约束扩展,不允许出现在接口或抽象类中不存在的public函数

II.参数类型,引用对象尽量使用接口或抽象类,而不是实现类

III.抽象层尽量保持稳定,一旦确定即不允许修改

要实现对扩展开发,首要的条件就是抽象约束

2).封装变化

I.将相同的变化封装到一个接口或抽象类中

II.将不同的变化封装到不同的接口或抽象类中,不应该有两个不同的变化出现在同一个接口或抽象类中。

后续讲的23个设计模式都是从各个不同的角度对变化进行封装的。

3).使用配置参数控制程序行为,减少重复开发

上述对六大设计原则的阐述应该已经很清晰,用专门的例子进而讲解设计原则应当不需要了,而且在实际运用或者具体大的例子中更能体现,所以在后续设计模式中会再次说明这些设计原则

时间: 2024-11-05 19:34:18

设计原则20170710的相关文章

Java程序员应该了解的10个面向对象设计原则

面向对象设计原则: 是OOPS(Object-Oriented Programming System,面向对象的程序设计系统)编程的核心,但大多数Java程序员追逐像Singleton.Decorator.Observer这样的设计模式,而不重视面向对象的分析和设计.甚至还有经验丰富的Java程序员没有听说过OOPS和SOLID设计原则,他们根本不知道设计原则的好处,也不知道如何依照这些原则来进行编程. 众所周知,Java编程最基本的原则就是要追求高内聚和低耦合的解决方案和代码模块设计.查看Ap

Hbase中rowkey设计原则

Hbase中rowkey设计原则 1.热点问题 在某一时间段,有大量的数据同时对一个region进行操作 2.原因 对rowkey的设计不合理 对rowkey的划分不合理 3.解决方式 rowkey是hbase的读写唯一标识 最大长度是64KB. 4.核心原则 设计必须按照业务需求进行设计 5.长度原则 经验:10~100字节可以 官方:16字节,因为操作系统时8字节进行存储 6.散列原则 划分region是按照rowkey的头部进行划分. 有几种方式: )组合字段 id+timestamp )

设计原则之接口隔离原则

segregate   v.隔离 se 蛇  gre green格林  gate门 蛇被格林用门隔离了. 设计原则之接口隔离原则 动机:         客户不应该被强制实现他们不用的方法.应该用多个小的接口代替庞大功能全的接口. 结论:        该原则在代码设计的时候就要考虑.可以使用适配器模式将胖接口隔离. Bad Example:    缺点:         1.如果新增一个robot机器人工人,那么eat方法就是多余的了. // interface segregation pri

设计原则之单一职能原则

设计原则之单一职能原则 动机:         一个职能被考虑成为只有唯一理由去改变,如果我们有两个理由去改变一个类,我们要把这两个功能分成两个类.每个类只控制一个职能,如果在未来有一天我们做某个改变,去改变对应的类就行了. 目标:        一个类应该只有一个被改的理由. Bad Example:缺点:     1.新增一个新的协议将会带来一个新需求,要为每种域序列化内容.     2.内容不一定是string,也会有html等其他形式. // single responsibility 

设计原则之里氏代换原则

设计原则之里氏代换原则 substitute  = replace 替换 sub 下 st石头 i我  tu土 te特别 我用石头替换下土,造了特比坚固的房子 hierarchy  ['harɑk] = level 等级 hi海豹  er儿子  ar are是  ch成龙 海豹儿子的雷霆战机等级是比成龙高 derive [di'raiv]  起源,派生 de德国  rive river河 德国的莱茵河起源于阿尔卑斯山 动机:         当我们创建类的层级(继承),我们继承一些类,创建一些派

设计模式2 面向对象设计原则

面向对象设计原则  原则的目的 面向对象设计原创表  单一职责原则案例 开闭原则 案例 依赖倒转原则 案例 面向对象设计原则  对于面向对象软件系统的设计而言,在支持可维护性的同时,提高系统的可复用性是一个至关重要的问题,如何同时提高一个软件系统的可维护性和可复用性是面向对象设计需要解决的核心问题之一.在面向对象设计中,可维护性的复用是以设计原则为基础的.每一个原则都蕴含一些面向对象设计的思想,可以从不同的角度提升一个软件结构的设计水平.  面向对象设计原则为支持可维护性复用而诞生,这些原则蕴含

设计模式——设计模式与设计原则

设计模式--设计模式与设计原则 一.设计模式  1.设计模式简介 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石. 模式的经典定义:每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心,通过这种方式,我们可以无数次地重用那些已有的解决方案,无需再

面向对象设计原则

七大原则:开闭原则.里氏代换原则.依赖倒转原则.合成/聚合复用原则.迪米特法则.接口隔离原则,单一职责原则. 开闭原则是面向对象的可复用的基石.其他六种原则是手段和工具. 各规则详细(本部分为转载) http://kb.cnblogs.com/page/214010/ 正如牛顿三大定律在经典力学中的位置一样,“开-闭”原则(Open-Closed Principle)是面向对象的可复用设计(Object Oriented Design或OOD)的基石.其他设计原则(里氏代换原则.依赖倒转原则.合

软件设计原则和方法通俗理解

网上有很多关于软件设计原则的说法,很精确,很官方,但是对于有些初学者来说可能是不知所云,到最后把自己给郁闷到了,学习软件应该是一件愉快的事情. 那么软件设计原则有哪些呢? (1)可靠性 做出一个可靠的软件,跟女人找一个可靠的男人一样,女人找男人,需要男人品质好,人品好,靠谱,可信赖,可依靠,身材高大,等等.软件设计也是一样,在软件的设计阶段就要非常注意软件的可靠性,不要等到最后用的时候发现软件这里不行那里不行,或者说在使用软件过程中一旦发现问题还是可以恢复使用,不能直接崩溃. (2)健壮性 这个