热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

面向对象设计的六大原则

前言面向对象的三大特性:封装、继承、多态面向对象的四大好处:可维护、可扩展、可复用、灵活性好面向对象的六大基本原则是设计模式的基础一、单一职责原则1、概念:一个类,应该仅有一个引起它变化的原因。2、描

前言

面向对象的三大特性:封装、继承、多态

面向对象的四大好处:可维护、可扩展、可复用、灵活性好

面向对象的六大基本原则是设计模式的基础


一、单一职责原则

1、概念:一个类,应该仅有一个引起它变化的原因。

2、描述:如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或抑制这个类完成其它职责的能力。这种耦合会导致脆弱的设计,当变化发生时,设计会受到意想不到的破坏。

3、举例:内存坏了,只用换内存条,不用考虑CPU

一句话:不要往一个类里塞过多功能


二、开闭原则

1、概念:软件实体(类、模块、函数等)应该可以扩展,但是不可修改。

2、描述:在你设计的时候,时刻要考虑,尽量让这个类足够好,写好了就不要去修改,如果有新需求,增加一些类就好了,原来的代码能不动就不动。

3、举例:内存不够,加内存条,而不是修改原先内存条容量

一句话:开放的是扩展,封闭的是修改


三、依赖倒转原则

1、概念:高层模块不应该依赖低层模块,两个都应该依赖抽象。抽象不应该依赖细节,细节应该依赖抽象

                 

2、描述:面向过程开发时,为了使得常用代码可以复用,一般把这些常用代码写成函数,实现其它功能时,就可调用这些低层函数。也就是高层模块依赖低层模块。例如:可以把访问数据库操作做成低层函数,那么问题来了,当客户希望访问不同的数据库时,就麻烦了,因为高层模块与低层的访问数据库绑定在一起,没办法复用高层模块。

3、举例:如果CPU、内存都依赖具体的主板,那么主板一坏,换其它类型的主板也不能用

一句话:针对接口(或抽象类)编织,不要对具体实现编程


四、里氏代换原则

1、概念:子类型必须能够替换掉它们的父类型

2、描述:一个软件实体如果使用的是一个父类的话,那么一定适用于子类,而它察觉不出父类对象和子类对象的区别。子类可以以父类的身份出现。

一句话:子类可以以父类的身份出现


五、迪米特原则

1、概念:也叫最少知道原则。如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。如果其中一个类需要调用另一个类的某一个方法,可以通过第三者转发这个调用。

2、描述:在类的结构设计上,每一个类都应当尽量降低成员的访问权限。不需要别的类知道的成员或方法就不要公开。类之间的耦合越弱,越有利于复用,一个处在弱耦合的类被修改,不会对有关系的类造成波及。

一句话:强调类之间的松耦合,对别人少说话


六、接口隔离原则

1、概念:客户端不应该依赖它不需要的接口,一个类对另一个类的依赖应该建立在最小的接口上。

2、描述:使用多个专用接口比使用单一的总接要好。如鱼和人两个类,鱼有游泳和腮呼吸两个动作,人有走路和吃饭两个动作,这些动作不能写在一个接口里面,要拆成专门对鱼和人的两个接口才好。

一句话:多个专用接口要好于单一总接口




推荐阅读
  • ABP框架是ASP.NET Boilerplate的简称,它不仅是一个开源且文档丰富的应用程序框架,还提供了一套基于领域驱动设计(DDD)的最佳实践架构模型。本文将详细介绍ABP框架的特点、项目结构及其在Web API优先架构中的应用。 ... [详细]
  • 深入理解Redis中的字典实现
    本文详细介绍了Redis中字典的实现机制,包括其底层数据结构、哈希表与哈希节点的关系、元素添加方法及rehash操作的具体流程。 ... [详细]
  • 本文详细介绍了Java代码分层的基本概念和常见分层模式,特别是MVC模式。同时探讨了不同项目需求下的分层策略,帮助读者更好地理解和应用Java分层思想。 ... [详细]
  • 单片微机原理P3:80C51外部拓展系统
      外部拓展其实是个相对来说很好玩的章节,可以真正开始用单片机写程序了,比较重要的是外部存储器拓展,81C55拓展,矩阵键盘,动态显示,DAC和ADC。0.IO接口电路概念与存 ... [详细]
  • 本文介绍了如何使用开源工具ChkBugReport来解析和分析Android设备的Bugreport。ChkBugReport能够将复杂的Bugreport转换为易于阅读的HTML报告,并提供详细的图表和分析结论。 ... [详细]
  • 本文介绍了如何在 SQL Server 2005 中创建和使用数据库快照,包括创建数据库、数据表、插入数据、创建快照、查询快照数据以及使用快照进行数据恢复等操作。 ... [详细]
  • 8个IDC大数据基础定义解析丨IDC
    本文针对IDC数据行业相关名词术语进行解析,分为4组相关概念,希望大家读完 ... [详细]
  • 本文将详细探讨PHP中C的作用,并对比其他编程语言如Java和C的特点及其适用场景。 ... [详细]
  • 开发笔记:前端之前端初识
    开发笔记:前端之前端初识 ... [详细]
  • 在运行于MS SQL Server 2005的.NET 2.0 Web应用中,我偶尔会遇到令人头疼的SQL死锁问题。过去,我们主要通过调整查询来解决这些问题,但这既耗时又不可靠。我希望能找到一种确定性的查询模式,确保从设计上彻底避免SQL死锁。 ... [详细]
  • Linux中tput命令怎么用
    这篇文章主要介绍Linux中tput命令怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Linux常用命令tput命令将通过ter ... [详细]
  • http:blog.csdn.netzeo112140articledetails7675195使用TCPdump工具,抓TCP数据包。将数据包上传到PC,通过Wireshark查 ... [详细]
  • 选择PS3的硬盘容量时,应考虑个人需求和预算。虽然PS3的内存固定为512MB,但硬盘容量可以选择。如果你经常下载游戏或存储大量媒体文件,建议选择较大容量的硬盘。一般情况下,320GB或500GB的硬盘已经足够满足大部分用户的需求。 ... [详细]
  • 如果应用程序经常播放密集、急促而又短暂的音效(如游戏音效)那么使用MediaPlayer显得有些不太适合了。因为MediaPlayer存在如下缺点:1)延时时间较长,且资源占用率高 ... [详细]
  • 本文探讨了如何在线程中等待事务完成后再执行特定操作,特别是在发送校验短信时确保数据库操作已提交。 ... [详细]
author-avatar
jkjkjd_105
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有