文档章节

OOP三大特性及几大设计原则

乐在克里特
 乐在克里特
发布于 2017/02/24 11:22
字数 456
阅读 41
收藏 0
oop

 

封装:

1.隐藏实现细节;
2.恰当地公开接口;
3.将接口和实现分开,增强可维护性;(实现细节改变时,使用该类的客户端程序不需要改变)


继承

1.描述联结类的层次模型;
2.通过抽象,表达共性,实现类的重用;
3.通过子类增加方法和属性以及重写方法,表达差异性;


多态

1.屏蔽子类的差异性,针对共性/接口编程;(向上转型)
2.增强可扩展性;

 


相关设计原则(设计模式一般遵守的原则):
开闭原则(Open-Closed Principle, OCP):软件实体应该对扩展开放,对修改(对已有软件模块、特别是最重要抽象层模块的的更改)关闭。

 

迪米特法则(对于封装)(Law of Demeter LoD)又叫做最少知识原则(Least Knowledge Principle,LKP):对象间尽量最少了解,彻底将API接口和具体实现相分离,模块间仅仅通过API进行通信。

 

里氏代换原则(对于继承)(Liskov Substitution Principle,LSP):如果对于每一个类型为A的对象a,都有类型为B的对象b,使得A定义的所有程序P在所有对象a都替换成b时,程序P没有变化,那么B是A的子类型。

 

合成/聚合复用原则(对于继承)(Composite/Aggregate Reuse Principle,CARP):尽量使用合成/聚合,尽量不要使用继承。


依赖倒转原则(涉及多态)(Dependence Inversion Principle):抽象不应依赖于细节,细节应依赖于抽象;针对接口而非实现编程。

 

三大特性介绍:

http://www.cnblogs.com/hnrainll/archive/2012/09/18/2690811.html

简单介绍:

http://kakajw.iteye.com/blog/1637179

介绍几大原则:

http://blog.csdn.net/anders_zhuo/article/details/8949566

© 著作权归作者所有

共有 人打赏支持
上一篇: log4j的使用
下一篇: Joda-Time 入门
乐在克里特
粉丝 16
博文 268
码字总数 394729
作品 0
杭州
程序员
私信 提问
34岁!100天!学会Java编程(Day49-Day52)—OOP设计模式

新书发布会 下午的昊海楼9层阁楼,阳光从分别从西侧落入,从东侧大厦的玻璃幕墙反射回来,将阁楼填满了阳光。在这样的阳光下目睹一本新书的发布,有一种迷幻的味道。 (一)为什么要学设计模...

魏小筠
2017/12/18
0
0
设计模式-行为-Mediator(中介者)模式

对象之间的交互是很常见的需求了,如果系统非常大,对象很多,那么交互 通信起来的复杂度就大大增加了。需要 一个通信类来负责交互 这就是Meditator模式,还带来了系统间对象的松耦合 Mediat...

梦想游戏人
2016/05/04
30
0
用C实现OOP面向对象编程(1)

如摘要所说,C语言不支持OOP(面向对象的编程)。并这不意味着我们就不能对C进行面向对象的开发,只是过程要复杂许多。原来以C++的许多工作,在C语言中需我们手动去完成。 博主将与大家一起研究...

临峰不畏
2015/12/26
196
0
基于C++的纯面向对象的通用高性能大并发TCP-SERVER/CLIENT开发框架实践系列之前言篇

基于C++的纯面向对象的通用高性能大并发TCP-SERVER/CLIENT开发框架实践系列之前言篇 yijian 2008-12-21 technologier@126.com 1. 回首 工作几年了,没什么沉淀,不是忙工作就是忙着休息,大四...

一见蓝天
2008/12/21
0
0
主流编程语言的对比分析

最近做Android和IOS项目,由资深windows平台C++开发转型做移动平台,涉及到C++、Java、ObjectC三类语言的对比,本文将从面向对象语言三大特性&五大原则角度对比分析,总结沉淀下来(N年前做J...

筱骏
2016/12/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

tomcat线程模型

Connector结构 BIO模式 NIO模式

grace_233
19分钟前
1
0
Javascript

变量定义 以$,_,字母开头 大小写敏感 var 关键字声明变量 声明未赋值undefined 数据类型 字符串,数字,布尔,数组,NULL,undefined 变量均为对象 函数 无默认值 var声明的是局部变量 函数外声明...

关元
21分钟前
1
0
文件系统、服务、防火墙、SELINUX——安全四大金刚

一提到安全,大家都会想到防火墙,和文件系统权限。而实际工作环境中,我们在Linux的安全配置,会涉及到四个级别。我们思考一个场景,你要在百度盘中存放一个文件,这个动作需要考虑下面四个...

Linux就该这么学
22分钟前
1
0
从源码角度理解Java设计模式——门面模式

一、门面模式介绍 门面模式定义:也叫外观模式,定义了一个访问子系统的接口,除了这个接口以外,不允许其他访问子系统的行为发生。 适用场景:子系统很复杂时,增加一个接口供外部访问。 优...

我叫刘半仙
31分钟前
2
0
新鲜出炉,2019最新大厂面试题总汇!

在这个互联网技术快速迭代的时代,每个程序员都知道技术对于职业发展的重要性,那些技术好的程序员不仅薪资高,而且大多数集中在一线互联网企业工作,让人感觉非常高大上的同时,也想去大厂做...

Java架构资源分享
40分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部