面向对象设计6大原则

简介:
OOP基本上有6大原则,而实际上都是互补的,也就是说一些原则需要利用另一些原则来实现自己。6大原则如下:

1) Open-Close Principle(OCP),开-闭原则,讲的是设计要对扩展有好的支持,而对修改要严格限制。这是最重要也是最为抽象的原则,基本上我们所说的Reusable Software既是基于此原则而开发的。其他的原则也是对它的实现提供了路径。


2) Liskov Substituition Principle(LSP),里氏代换原则,很严格的原则,规则是“子类必须能够替换基类(父类),否则不应当设计为其子类。”也就是说,子类只能去扩展基类,而不是隐藏或覆盖基类。


3) Dependence Inversion Principle(DIP),依赖倒换原则,“设计要依赖于抽象而不是具体化”。换句话说就是设计的时候我们要用抽象来思考,而不是一上来就开始划分我需要哪些哪些类,因为这些是具体。这样做有什么好处呢?人的思维本身实际上就是很抽象的,我们分析问题的时候不是一下子就考虑到细节,而是很抽象的将整个问题都构思出来,所以面向抽象设计是符合人的思维的。另外这个原则会很好的支持OCP,面向抽象的设计使我们能够不必太多依赖于实现,这样扩展就成为了可能,这个原则也是另一篇文章《Design by Contract》的基石。


4) Interface Segregation Principle(ISP),接口隔离原则,“将大的接口打散成多个小接口”,这样做的好处很明显,我不知道有没有必要再继续描述了,为了节省篇幅,实际上我对这些原则只是做了一个小总结,如果有需要更深入了解的话推荐看《Java与模式》,MS MVP的一:本巨作!^_^


5) 单一职责:一个类的功能尽量单一,降低耦合


6) Law of Demeter or Least Knowlegde Principle(LoD or LKP),迪米特法则或最少知识原则,这个原则首次在Demeter系统中得到正式运用,所以定义为迪米特法则。它讲的是“一个对象应当尽可能少的去了解其他对象”。也就是又一个关于如何松耦合(Loosely-Coupled)的法则。

好了,以上是6大原则(或法则)的介绍,对这些原则的深入研究正是如何得到设计模式的道路。在进行了深入了解后我们就可以开始看看设计模式了,设计模式正是对这些法则的应用,著名的设计模式有四人帮(Gang of Four,GoF)的23个模式,除此之外还有很多其他的一些著名模式,大家可以慢慢研究。

更过技术问题解决防范请搜索千锋PHP,千锋论坛
相关文章
|
弹性计算 关系型数据库 PHP
快速搭建phpwind论坛系统
phpwind 是采用 PHP + MySQL 方式运行的开源社区程序。轻架构,高效率简易开发,帮助您快速搭建并轻松管理社区站点。本文介绍如何使用云市场的 PHPWind论坛系统(含智慧云虚机面板) 快速搭建论坛。
16184 0
|
Java Android开发
Android热修复升级探索——资源更新之新思路
Android资源更新之新思路:我们在资源修复方法上取得了突破性进展!新的资源修复方法不论是在使用便捷性、补丁包大小还是运行时效率方面,相比其他实现都有巨大的优势。
12919 1
|
机器学习/深度学习 分布式计算 大数据
阿里云数加产品家族图首次亮相
数加就是阿里云专业搞大数据各种神器的产品大家族其实技术型产品也没辣么难懂,一层各种形式计算完给到二层做数据展现&算法加工,三层通过各种算法延展粗各种数据应用.您买间屋也行,买一层可以,要是高兴买整栋楼都随您意!
9801 0
|
分布式计算 SQL 监控
MaxCompute(原ODPS)开发入门指南——数据上云篇
根据《MaxCompute(原ODPS)开发入门指南——计量计费篇》的了解,大家清楚了MaxCompute可以做什么,计费模式如何,想必大家也开通了MaxCompute想进行一次POC,但是大家遇到第一个问题一定是我的数据如何上云?
11196 0
|
机器学习/深度学习 人工智能 数据库
【AI研究室】第1期 | OtterTune来了,DBA真的要失业了么
又一个产品借AI上头条了,就是OtterTune!脆弱的人类DBA又要面对威胁了;GoogleAssistant可以在美区AppStore下载了,微软小娜也开启了iOS版内测招募,Siri真的要离开我们了?关注AI研究室,AI资讯早知道!
10669 0
|
Linux Docker 容器
Docker企业版安装指南
本文介绍了Docker企业版的安装步骤,包含了Docker UCP和Docker DTR的安装命令以及页面配置。
3574 0
|
SQL 监控 关系型数据库
阿里数据库内核月报:2017年01月
阿里数据库内核月报:2017年01月
1967 0
不想当“乖宝”的新人设计师是怎么成为独角兽的
5月25日,云栖社区与云翼计划联合主办了首届互联网新兵进阶在线峰会,优酷资深交互设计师带来西戎题为“不当“乖宝”的新人设计师是怎样成为独角兽的”的演讲。本文主要从求学经历开始谈起,接着重点讲述了西戎的面试经验,然后着重分享了入职后的心路历程,最后对未来作了简要规划。一起来了解下
4179 0
|
关系型数据库 数据库 索引
阿里数据库内核月报:2015年09月
阿里数据库内核月报:2015年09月
1239 0
|
算法 关系型数据库 数据库
阿里数据库内核月报:2015年05月
阿里数据库内核月报:2015年05月
1405 0

热门文章

最新文章