记忆方式

单 开 里 依 接 迪 组

单一职责

一个类应该只负责一件事情,比如Android中的Paint只负责和画笔有关的事情,颜色、大小等,Canvas只负责画布相关的事情,画布大小设置、背景等。

开闭原则

类应该对拓展开放,对修改封闭。也就是说新需求尽量不要修改之前的代码,通过拓展的方式新增功能,可以把经常修改的东西抽象出来。

里式替换原则

可以理解成Java的多态,也就是用父类的地方,都能用子类进行替换。反过来却不行。

依赖倒置原则

  1. 高层不应该依赖低层
  2. 抽象不依赖细节
  3. 细节应该依赖抽象

尽量不要依赖实现类,依赖接口(抽象)

接口隔离原则

接口定义应该细一些,不要将一对接口放在一个interface中。还有就是一个方法不要干太多活,拆开细分,可识别度会高一些。

迪米特原则

对自己使依赖的类,只需要知道接口就行,内部实现不需要关心。

就和家里铺地板,找包工头来干活,我们需要知道的就是给了钱给包工头,包工头能给咱干好活,而不关心包工头是去找自己A师傅来铺砖,找B师傅去买砖,还是找C师傅来卖砖和铺砖。

这里也可以理解为,封装接口的时候,提供的接口能够一步到位的完成任务。而不是接口返回一个对象,让业务使用方再调用返回对象的另一个方法来获取最终结果。

比如A调用B的work方法来输出结果“hello word!”。 如果B的work方法返回了一个C类,然后再调用C类的work方法才完成输出。这样就导致A类多依赖了一个C类。

使用组合替代继承

禁止滥用继承来拓展功能,使用组合替换。

使用组合的时候,配合依赖倒置的原则,依赖接口,而不是依赖实现

面向对象的基本设计原则相关推荐

  1. 面向对象的基本设计原则【转】

    面向对象的3个基本要素:封装.继承.多态 面向对象的基本设计原则: 单一职责原则(Single-Resposibility Principle) 其核心思想为:一个类,最好只做一件事,只有一个引起它的 ...

  2. 面向对象的5个基本设计原则

    面向对象的3个基本要素:封装.继承.多态 面向对象的5个基本设计原则: 单一职责原则(Single-Resposibility Principle) 其核心思想为:一个类,最好仅仅做一件事,仅仅有一个 ...

  3. 面向对象的3个基本要素和5个基本设计原则(整理)

    面向对象的3个基本要素:封装.继承.多态 面向对象的5个基本设计原则: 单一职责原则(Single-Resposibility Principle) 其核心思想为:一个类,最好只做一件事,只有一个引起 ...

  4. 面向对象的设计原则最终篇

    点击上方"方志朋",选择"设为星标" 做积极的人,而不是积极废人 关于面向对象的设计原则我之前已经解释过四种了,分别是单一职责原则,开放关闭原则,里式替换原则, ...

  5. 语音用户界面基本设计原则

    本文由作者 Sabaku_no_Gaara 于社区发布 本章为读者创建一个 VUI 系统打下了基础.以专题形式,阐述设计工具.会话信息确认.错误行为处理,以及如何处理新手用户和专家用户等基本设计原则. ...

  6. PHP核心技术笔记(2):面向对象的设计原则

    1.面向对象设计五大原则 面向对象设计的五大原则分别是单一职责原则.接口隔离原则.开放-封闭原则.替换原则.依赖倒置原则. 2.单一职责原则(single Pesponsibility Princip ...

  7. 面向对象回顾(构造函数、覆盖和重载、Query接口的list方法和iterate方法、面向对象的六原则一法则、反射、内部类)

    1. 什么是构造函数?什么是构造函数重载?什么是复制构造函数? 当新对象被创建的时候,构造函数会被调用. 每一个类都有构造函数. 在程序员没有给类提供构造函数的情况下,Java编译器会为这个类创建一个 ...

  8. wordvba编程代码大全_面向对象、设计原则、设计模式、编程规范、重构

    面向对象.设计原则.设计模式.编程规范.重构 面向对象 主流的三个编程风格有:面向对象,面向过程,函数式编程. 面向对象是最主流的风格,面向对象具有丰富的特性(封装,抽象,继承,多态). 面向对象 面 ...

  9. 6月24 面向对象的设计原则-----工厂模式和单列模式

    工厂模式: 工厂模式就是专门负责将大量有共同接口的类实例化,而且不必事先知道每次是要实例化哪一个类的模式.它定义一个用于创建对象的接口,由子类决定实例化哪一个类. 工厂模式相当于创建实例对象的new, ...

  10. Java 面向对象的设计原则

    一. 1.面向对象思想的核心: 封装.继承.多态.   2.面向对象编程的追求: 高内聚低耦合的解决方案: 代码的模块化设计: 3.什么是设计模式: 针对反复出现的问题的经典解决方案,是对特定条件下( ...

最新文章

  1. deepin10.15安装cuda10.1.168 cudnn7.6.1 tensorflow_gpu1.4.0
  2. redirect和forward
  3. JVM_04 字符串常量池(详解intern( ))
  4. 强连通分量:洛谷P3387 模板:缩点
  5. P3287-[SCOI2014]方伯伯的玉米田【二维树状数组,dp】
  6. 电商 php 颜色数据怎么敲?_来客说电商|电商系统开发注意事项
  7. coverity代码检测工具介绍_微服务测试之静态代码扫描
  8. 高通8155车载芯片_WEY来“摩卡”云首秀,搭载高通8155芯片
  9. python 熊猫,Python熊猫
  10. Minesweeper 蓝桥杯 扫雷游戏(化繁为简)(摒弃多层循环)
  11. python代码复制运行不了_pycharm 复制代码出现空格的解决方式
  12. 计算机英语背诵发音,英语背诵十大技巧,简直不要太实用
  13. JavaWeb(Linux)
  14. 解读帖子:结构化编译器前端 Clang 介绍(VS2017编译clang)
  15. TreeSize Free
  16. 机器人的未来2022(转载)
  17. #HHD32F107# IIC
  18. 怎样煮鸡蛋才能让鸡蛋熟且不破
  19. 清华同方的计算机硬件设置,清华同方笔记本电脑开机进入BIOS的几种方法(F2)附bios设置图文方...
  20. 计算机主机板的各种接口安装,计算机主板上的插座或接口有哪些

热门文章

  1. 最新python中一升级所有已安装的包方法
  2. 【Gym-101775 C】Traffic Light【思维】
  3. 【2019南昌邀请赛网络赛 B Greedy HOUHOU BZOJ 2957 楼房重建】线段树+二分
  4. 一道学吧上的题目,python3 - 解决高中的古典概率问题: 有A、B两个袋子。A袋中装有4个白球、2个黑球,B袋中装有3个白球、4个黑球。从A、B两个袋子中
  5. 开发中常用正则表达式
  6. 拦截器(Interceptor)和过滤器(Filter)区别
  7. Cocos2d-x移植android增加震动效果
  8. js高程读书笔记(1-3章)
  9. Hadoop工程包架构解析
  10. iPhone Web App及优缺点【书摘】