在做面向对象程序设计时,我们通常会在为如何设计一个类而烦恼这里简单介绍面向对象编程的几个原则,根据这些原则去设计类以及类与类之间的关系,从而使得程序满足高可维护、可复用等条件。

面向对象编程与面向过程编程的理解:(纯属个人理解)

        面向过程编程:好比做一件事,自始至终都是一个人在做。如:研发一个软件开发项目,从业务调研,UI设计,前端设计,后台设计等等都是由一个人完成,各部分的衔接非常紧密。

        面向对象编程:也是做一件事,但是这件事是由一个团队完成,每个人负责不同的部分,若业务需要更改,那么只需调整相关部分即可。

        面向过程编程 好比是在 面对对象编程 中仅使用一个对象来完成所有业务的编程。

一、单一职责原则:

在设计一个类,要充分考虑到这个类拥有特征(属性)和功能(方法)。当然,也不在这个类中添加额外的方法,否则会出现对象“权责不明”的情况,对于程序开发、维护都十分不利。

        如:设计一个模型User,该包含name和pwd属性,以及对应的get和set方法;不要添加otherMethod这种与对象无关的方法,使得程序的可复用性和可维护性偏弱。

            

        优点:使面向对象程序设计结构清晰,有利于提高开发效率、减小维护成本。


二、开放 - 封闭原则:

        开放:对程序的扩展是开放的。可以创建自己的类(这些类可以继承已有的类或实现已有的接口)来完成所需的业务逻辑;

        封闭:对程序的更改是封闭的。在做开发时,尽可能的不去的更改已有的类,如在使用框架时,不能更改框架的源码(框架重构除外)

        优点:使程序可扩展性强、维护成本减小等。


三、依赖倒置原则:

在做MVC模式开发中,通常来说,Controller层会直接依赖于Service层,Service层直接依赖于Dao层,这种编程方式称为“依赖实现编程”。这种编程方式有一个很大的缺点,那就是耦合性太强。

将MVC各层进行抽象,Controller抽象层与Service抽象层建立关系,Service抽象层与Dao抽象层建立关系,而具体的MVC各层之间并无直接联系,这种编程方式称为“依赖抽象编程”。这种编程方式解决了“依赖实现编程”强耦合性的缺点

        从“依赖实现编程”到“依赖抽象编程”的转变,既是 依赖倒置原则。

优点:遵循了开放 - 封闭原则;减小了高层与底层之间的耦合度。


四、里氏代换原则:

简单理解就是面向对象编程中的继承。用《大话设计模式》中的一句话说,就是:子类型必须能够替换掉它们的父类型。


五、迪米特法则:

        如果两个类没有直接联系,那么它们之间没有必要发生直接的相互作用。如果非要它们之间发生某种联系,则可以通过第三个类来建立关系。

        优点:避免不相关的类之间的耦合。


六、合成/聚合复用原则:

尽量使用合成/聚合,尽量不要使用类继承。聚合,集体与个体的关系,好比人群是由一个一个的人聚在一起形成的;组合,部分与个体的关系,好比一个人是由头、手、脚等各部分组成的。

优点:保持了每个类的封装性;类和类继承层次会保持较小规模。


结语:单一职责原则、开放 - 封闭原则、依赖倒置原则是最为常用的原则,做面向对象程序设计时尽量遵循这几大原则。

(本人为初学者,技术尚浅,若有写错的地方,还望赐教。)


面向对象编程 - 六大原则相关推荐

  1. [转]面向对象的六大原则

    现在编程的主流语言基本上都是面向对象的.如C#,C++,JAVA.我们在使用时,已经构造了一个个的类.但是往往由于我们在类内部或外部的设计上存在种种问题,导致尽管是面向对象的语言,却是面向过程的逻辑, ...

  2. 面向对象的六大原则之 —— 迪米特原则

    学习了何红辉.关爱民写的<Android设计模式>,对于面向对象的六大原则有进一步的理解,特此根据自己的理解记录总结一下 什么是迪米特原则 也称为最少知识原则,意思就是一个对象应该对其他对 ...

  3. 面向对象程序设计六大原则

    面向对象程序设计中,需要遵守的原则可总结为6个,这就是大名鼎鼎的六大原则.面向对象程序设计原则也是我们用于评价一个设计模式的重要指标之一.在设计模式中,很多设计模式都遵守了这些原则. 单一职责原则(S ...

  4. 面向对象的六大原则(原则都是唬人 关键在于理解面向对象)

    一 六大原则叫什么我已经忘了 二 六大原则到底是什么以及有什么作用,一句话:教你在用面相对象编程语言编程的时候如何更好地利用面向对象编程语言的特性. 例如:如果你使用的是java语言的话. 1 最基本 ...

  5. 走向灵活软件之路-面向对象的六大原则

    前言 关于设计模式六大设计原则的资料网上很多,但感觉很多地方解释地都太过于笼统化,特此再总结一波. 优化第一步-单一职责原则SRP 单一职责原则(Single Responsibility Princ ...

  6. 面向对象设计六大原则

    6大原则如下: 1)单一职责原则,一个合理的类,应该仅有一个引起它变化的原因,即单一职责,就是设计的这个类功能应该只有一个; 优点:消除耦合,减小因需求变化引起代码僵化. 2) 开-闭原则,讲的是设计 ...

  7. 设计模式之——面向对象的六大原则

    一.单一职责原则     定义:Single Responsibility Principle,即SRP:一个类应该是相关性很高的方法与数据的封装,不同的职责应该分别封装到不同的类或模块当中.     ...

  8. 面向对象的六大原则之 接口隔离原则——ISP

    ISP = Interface Segregation Principle ISP的定义如下: 1.客户端不应该依赖他不需要的接口 2.一个类对另外一个类的依赖性应该是建立在最小的接口上 3.不应当将 ...

  9. 唠唠面试常问的:面向对象六大原则

    点击蓝色"程序猿DD"关注我 回复"资源"获取独家整理的学习资料! 来源:http://t.cn/EoMKcLJ 这是设计模式系列开篇的第一篇文章.也是我学习设 ...

最新文章

  1. 某企业生产系统升级Linux系统及内核
  2. 计算机类农学类牧医类,考生注意!2017年高考报考类别确定
  3. 程序员的10个快乐瞬间!
  4. du 查看使用 linux命令,如何正确使用Linux命令–du
  5. Mysql数据库及帐号的权限查询
  6. MySQL大表关联如何优化_MySQL 对于大表(千万级),要怎么优化呢?
  7. flex弹性布局学习总结
  8. Microsoft Office Word一打开文档就弹出样式小窗口
  9. 视频教程-四十九课时精通matlab数学建模-Matlab
  10. python可以手眼定标吗_机器人无标定手眼协调
  11. python复数类型的虚部通过什么表示_Python小白必备知识:Python复数类型(complex)详解...
  12. 铲雪车(snow)[欧拉回路]
  13. 9008 能 解锁BL_手机刷入面具及twrp教程(包含解bl锁教程)
  14. 树莓派数据上传数据库_树莓派内部数据向domoticz的上传
  15. 当前应用拦截NFC响应,不弹出选择框教程
  16. 正方形数组的数目(DAY 81)
  17. vue3里面的watch
  18. gorm 记录sql日志 每天一个日志文件
  19. python中rjust用法_python中rjust的用法
  20. Infiniband基本知识

热门文章

  1. 猴子下山,动态规划。
  2. Leaflet入门:利用leaflet展示各个国家的某些数据
  3. 如何避免3Ds MAX使用Vray渲染器渲染出现的自动闪退关闭?
  4. 彻底关闭搜狗输入法自动更新
  5. Matlab TreeBagger随机森林分类实例
  6. PHP地方装修门户系统
  7. rt-thread应用篇(02)---智能家居DIY项目之使用ESP8266实现onenet平台上报
  8. 重温FPGA之4bit信息位 汉明编码器 verilog实现
  9. 数据挖掘:银行客户认购产品预测
  10. qq聊天信息服务器,golang实现qq聊天之客户端与服务器