面向对象八大设计原则_稳定不依赖变化-程序员宅基地

技术标签: # 设计模式  

1 依赖倒置模式 (DIP)
稳定不依赖于变化,提出了抽象类。

2 开放封闭原则(OCP)
对扩展开放,对更改封闭
类模块应该是可扩展,不可修改的

3 单一职责原则 (SRP)
类里面不要放太多的成员,这代表这个类里面隐含了多个责任。

4 Liskov替换原则(LSP)

5接口隔离原则(ISP)
接口应该小而完备 注意public、private、protected的使用。

6 优先使用对象组合而不是类继承

7 封装变化点
使用封装来创建对象之间的分界层。

8 针对接口编程,而不是针对实现编程。

设计模式要点:寻找变化点,在变化点运用设计模式
重构获取模式。敏捷软件开发提倡的"Refactoring to patterns"是目前来说最好的使用设计模式的方法,

重构关键技法

  • 静态——>动态
  • 早绑定——>晚绑定
  • 继承——>组合
  • 编译时依赖——>继承时依赖
  • 紧耦合——>松耦合

现代软件分工结果:框架与应用程序

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42692164/article/details/111358123

智能推荐

TCP通信丢包主要问题及具体问题分析_tcp的客户端发送报文给服务器,不产生丢包或网络阻塞,但是数据不一致是因为-程序员宅基地

文章浏览阅读7.2k次。今天在公司问老大,公司的项目底层,是使用的TCP,因为可靠,自动断线重连,在底层都实现了,但是我记得TCP也会有掉包的问题,所以这文章就诞生了——关于TCP掉包的问题,TCP是基于不可靠的网络实现可靠的传输,肯定也会存在掉包的情况。 如果通信中发现缺少数据或者丢包,那么,最大的可能在于程序发送的过程或者接收的过程出现问题。 例如服务器给客户端发大量数据,Send的频率很高,_tcp的客户端发送报文给服务器,不产生丢包或网络阻塞,但是数据不一致是因为

centos7 配置本地yum源_yum clean all 已加载插件:fastestmirror 正在清理软件源: clouder-程序员宅基地

文章浏览阅读232次。[base-local] #唯一标识,不能重复name=CentOS-local #名字(随便)baseurl=file:///mnt/cdrom #上方步骤一挂载镜像创建的目录enabled=1 #yum源是否启用 1-启用 0-不启用gpgcheck=1 #对源进行检测,安全检测 1-开启 0-不开启,本地源一般不检测,网络源一般检测gpgkey=file:///etc/pki/r..._yum clean all 已加载插件:fastestmirror 正在清理软件源: cloudera-manager os7_

echarts基础语法_echarts splitnumber-程序员宅基地

文章浏览阅读3.4k次,点赞2次,收藏28次。一.首页知识点推荐:点击首页->可视化实验室里面有很多意想不到的宝藏二.名词解析1.基本名词xAxis 横坐标yAxis 纵坐标grid 整个坐标系是基于grid这个网格去定位的legend 图例dataRange 值域选择,常用于展现地域数据时选择值域范围dataZoom 数据区域缩放,常用于展现大量数据时选择可视范围toolbox 工具箱tooltip 气泡提示框,常用于展现更详细的数据timeline 时间轴series 存放数据的大数组.._echarts splitnumber

汽车厂商的摘星指南:我们能从如祺出行身上学到什么?-程序员宅基地

文章浏览阅读528次。自从Uber、滴滴、神州等等一系列企业之间的战争偃旗息鼓之后,网约车市场已经安静许久了。但不论任何市场,都会有变量的存在,就当人们认为网约车市场趋于稳固时,新的变量又出现..._但无论汽车厂商

页面模块向上渐变显示效果实现-程序员宅基地

文章浏览阅读222次。想要首页不那么枯燥无味吗?还在未首页过于单调而苦恼吧,来试试这个吧(大佬请忽略上述语句·o·)希望本文会对您有所帮助~ ^_^

AArch64编译安装特定GPU版本TensorFlow及Bazel_createinferruntime_internal-程序员宅基地

文章浏览阅读3.5k次,点赞4次,收藏4次。ALBERT 的 requirements.txt 要求 tensorflow==1.15.2,而这显然是不能通过 Ubuntu apt 安装的,也根本没有为 aarch64 架构编译好的 binary,所以采用编译安装。首先在 tensorflow 的 GitHub Release 中找到 1.15.2 版本,下载 Assets 中的 Source code (tar.gz),然后解压。这时如果直接执行 sudo ./configure 会报错找不到 bazel。参考最新版本的 bazelbuild _createinferruntime_internal

随便推点

yii framework学习笔记-程序员宅基地

文章浏览阅读105次。一、验证和授权 1、基本验证授权方式 在控制器重重写filters方法,这个filter指定的是过滤器,可以是当前控制的方法,必须是以filter开头。 我们来看看通过yii 中示例中博客的例子。 <?phpclass TblPostController extends Controller{ /** * @return array 过滤器列表..._yii regeframe

springmvc 配置文件_配置文件bluej-程序员宅基地

文章浏览阅读296次。1、在同级目录下。默认就ok springMVC1 index.html index.htm index.jsp default.html default.htm default.jsp springMVC org.springframework.web.servlet.DispatcherSe_配置文件bluej

在STM32上实现NTFS之5:GPT分区表的C语言实现(2)GPT实现以及统一方式读取磁盘分区...-程序员宅基地

文章浏览阅读263次。  上一节实现了主GPT头的信息提取,这一节继续提取整个的GPT数据,并且将GPT分区表和MBR分区表两种格式融合成一个模块,使主调函数(也可以说是使用者)不需要关心磁盘的分区表类型:它太底层了,确实不需要过多的关心。  继续看上一节的图1,这里就不贴图了,LBA1的主GPT头给出了分区信息的总数,还有每一个分区信息所占用的字节数,分区信息的结构如表1:表1 分区信息结构(GPT..._stm32 gpt subsystem

Hbase 获取scofield的English成绩信息-程序员宅基地

文章浏览阅读332次。package com.hbase;import java.io.IOException;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.hbase.Cell;import org.apache.hadoop.hbase.CellUtil;import org.apache.hadoop.hbase.HBaseConfiguration;import org.apache.hadoop.hbas

京东架构师带你从JDK源码角度看Object_jlog作者京东-程序员宅基地

文章浏览阅读256次。Java的Object是所有其他类的父类,从继承的层次来看它就是最顶层根,所以它也是唯一一个没有父类的类。它包含了对象常用的一些方法,比如getClass、hashCode、equals、clone、toString、notify、wait等常用方法。所以其他类继承了Object后就可以不用重复实现这些方法。这些方法大多数是native方法,下面具体分析。主要的代码如下:public class Object { private static native void registerNatives_jlog作者京东

情人节程序员用HTML网页表白【爱心表白】 HTML5七夕情人节表白网页源码 HTML+CSS+JavaScript_html 表白代码-程序员宅基地

文章浏览阅读1.7k次,点赞3次,收藏6次。1 网页简介:基于 ,快来制作一款高端的表白网页送(他/她)浪漫的告白,制作修改简单,可自行更换背景音乐,文字和图片即可使用2.网页编辑:任意HTML编辑软件(如:Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad++ 等任意html编辑软件进行运行及修改编辑等操作)。代码如下(示例):以下仅展示部分代码供参考~三、精彩专栏看到这里了就 【点赞,关注,收藏】 三连 支持下吧,你的支持是我创作的动力。......_html 表白代码

推荐文章

热门文章

相关标签