一句话设计原则

面向对象的可复用设计( Object Oriented Design / OOD)

1. 开闭原则 (Open Closed Principle)

对扩展开放,对修改关闭

2. 里氏代换原则(LSP)

1.可以使用基类的地方,其子类必然也能使用
2.并且原功能不会受到任何影响

-- 经典案例, 正方形是不是长方形的子类?

3.依赖倒转原则(DIP)

依赖抽象,不要依赖具体,面向接口编程

传统过程性设计办法倾向于高层依赖低层,抽象依赖具体
image.png
依赖倒转原则,就是把错误的依赖关系倒转过来
image.png

4.接口隔离原则(ISP)

使用多个专门的接口,比使用单一的接口要好

5.合成、聚合复用原则(CARP)

尽量使用合成,聚合,尽量不使用继承

6.迪米特法则

不跟陌生人说话……

  1. 这是“某人” 的朋友圈, 他与“朋友” 之间是朋友关系
    image.png
  2. 这是“朋友” 与 “陌生人” 组成的朋友圈
    image.png

  3. 迪米特法则建议,“某人” 与 “陌生人” 之间不要进行直接通话,而是通过“朋友”去调用“陌生人”的方法,对于“某人”来说,“陌生人”是不存在的。
    image.png

怎么样才算“朋友”? 也只有患难见真情。

  1. 当前对象本身
  2. 以参量形式传入到当前对象方法中的对象
  3. 当前对象的实例变量引用的对象
  4. 当前对象实例是集合,则集合中的对象是朋友
  5. 当前对象创建的对象

应该是有依赖关系的,就算是“朋友”吧

转载于:https://www.cnblogs.com/DonneZhang/p/10266780.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/280646.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

postman--安装及Interceptor插件

1. 官网安装(看网速-我下载的时候一直下载失败)打开官网,https://www.getpostman.com选择ios或者win 2. 非官网安装 https://pan.baidu.com/s/1mstsimqO3ZC5m9z8czxVnA 密码:q6yp 安装postman 3.需要安装分享的蓝灯安装包&#xf…

亚马逊标题自动抓取_如何为您的家人提供自动Amazon礼品卡津贴

亚马逊标题自动抓取When your kids move away to go to school, they’ll probably phone home every once in a while to ask for money. If they shop a lot on Amazon (and they probably do), you can expedite that process by setting up an automatically recurring dep…

Django04-2: ORM关系表\字段补充

一、表与表关系 一对多 多对多 一对一 图书表 出版社 作者表 作者详情表 出版社 和 图书表 关系 一对多 外键字段在多的一方 book 图书表 和 作者表 关系 多对多 需要创建第三张表 作者表 和 作者详情表 关系 一对一 #创建表关系 先将基表创建 再添加外键字段 一对多…

我 与 TDesignBlazor 的故事

前言作者打拼了 .NET 十多年,属于全栈应用类型的工程师,特别是对于前端的技术情有独钟,从纯js到jquery,从bootstrap到自己写css,从web到winform,还写过一段时间的knockout.js,以至于公司里的前端…

实验数据

1.整段deng音频200多秒 2.加xx(1000:1480)之后 转载于:https://www.cnblogs.com/20179302yzl/p/10270632.html

25个好用的Shell脚本常用命令分享

1.列出所有目录使用量,并按大小排序。复制代码 代码如下:ls|xargs du -h|sort -rn #不递归下级目录使用du -sh2.查看文件排除以#开关和空白行,适合查看配置文件。复制代码 代码如下:egrep -v "^#|^$" filenamesed /#.*$/d; /^ *$/d3.删除空格…

mysql中查询一个字段属于哪一个数据库中的哪一个表的方式

mysql中查询一个字段具体是属于哪一个数据库的那一张表:用这条语句就能查询出来,其中 table_schema 是所在库, table_name 是所在表 --mysql中查询某一个字段名属于哪一个库中的哪一张表 select table_schema,table_name from information_schema.columns where col…

macos剪切_如何使用macOS的内置“ Kill and Yank”作为替代剪切和粘贴

macos剪切Everyone knows about cutting and pasting by now. But did you know that your Mac sort of has a second clipboard known as kill and yank? 现在,每个人都知道剪切和粘贴。 但是您是否知道Mac上还有第二个剪贴板,称为“ kill and yank”&…

ExtJS 折线图趟过的坑

问题: 1、根据条件检索后绘制折线图,之前的坐标没有清除如图 解决方案: 在绘制之前,清空坐票: leftLine.surface.removeAll(); leftLine.redraw(false); 完整代码如下 storeBar.load({params: { SDate: bTime, EDate: …

EventBus的实现

EventBus概要 EventBus是消息传递的一种方式,基于一个消息中心,订阅和发布消息的模式。这种方式的实现不仅仅局限于前端,在iOS中的消息消息中心也是如此实现。 设计模式:订阅者发布者模式,这种设计模式在前端很常见。A…

Django05-1: 有名分组、无名分组与反向解析

有名、无名分组 分组正则表达式,加小括号 url(r^test/(\d), views.test),def test(request,xx):print(xx)return HttpResponse("OK") 无名分组 将括号正则表达式匹配的内容,当作位置参数传递到后面的视图函数 有名分组 正则表达式起一个别…

Django的第一步(第一节)

写下你的第一个Django应用第一部分让我们通过例子来学习.在本教程中,我们将引导您完成基本投票应用程序的创建.其中包括两部分:一个让人们查看民意调查并投票的公共网站.允许您添加,更改和删除民意调查的管理网站.我们假设你django已经安装好了,你可以通…

ad中电源插座怎么封装_您可以在房屋中安装的各种电源插座

ad中电源插座怎么封装You may already know about smart outlets, or outlets with integrated USB ports. But you might be surprised at how many “normal” outlets you can actually buy for your house. They’re all built for different situations, and you want to …

Arithmetic Slices

这两天一直复习动态规划,就想到leetcode上刷刷题,easy难度的很少,大部分都是medium和hard。本题是第一道DP类型medium难度的题目,但是用其他的方法比如暴力法也可以求解。首先来看题目描述: A sequence of number is c…

在Data Lake Analytics中使用视图

在Data Lake Analytics中使用视图 1. 概述 在Data Lake Analytics(以下简称DLA)中使用视图(VIEW)功能,可以大大简化对于重复SQL,特别是较为复杂的SQL语句的编写和维护。目前DLA中还不支持SQL视图的物化。在…

C# 实例详解委托之Func、Action、delegate(精品)

概述委托是.NET编程的精髓之一,在日常编程中经常用到,在C#中实现委托主要有Func、Action、delegate三种方式,本节主要就这三种委托的用法通过实例展开讲解。Func用法解析【Func】:Func是带返回值的委托:原型函数如下(以…

Django05-2:路由分发/命名空间/伪静态/虚拟环境/django版本区别

路由分发 补充:每一个应用可以有独立的templates模板文件夹,static静态文件加,urls.py 总路由 #方法一from app01 import urls as app01_urls from app02 import urls as app02_urlsurlpatterns [url(r^publisher_list/, views.publisher_…

Word中查找替换软回车键和回车键

在Word中使用搜索功能搜索“^p”组合字符串可以查找文档中的所有换行符(回车键),使用“^l”(英文输入状态下shift6与小写字符L的组合)可以搜索所有的软回车符。使用替换功能就可以搜索替换二者。转载于:https://www.cn…

minecraft服务器_如何使用Minecraft领域设置简单的无压力Minecraft服务器

minecraft服务器There are a lot of ways to go about hosting a Minecraft game but it’s tough to beat the simplicity of buying a server directly from Mojang, the company behind Minecraft (and now it even comes with a free 30 day trial!) Read on as we show yo…

自动化测试基础篇--Selenium浏览器操作

Selenium 主要提供的是操作页面上各种元素的方法,但它也提供了操作浏览器本身的方法,比如浏览器的大小以及浏览器后退、前进按钮等。一、控制浏览器窗口大小有时候我们希望能以某种浏览器尺寸打开,让访问的页面在这种尺寸下运行。例如可以将浏…