软件架构设计模式——从腐烂的不良设计中品读软件的人格障碍

本文主要是介绍软件架构设计模式——从腐烂的不良设计中品读软件的人格障碍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 僵硬性
  • 脆弱性
  • 不可移植性
  • 粘滞性
  • 不必要的复杂性
  • 不必要的重复性
  • 不透明性

在这里插入图片描述需求总是变化的,我们的系统会不断变化,不良设计会随着时间会慢慢变得更糟糕。设计的时候设计者鼠目寸光,没有长远规划,会给未来留下隐患。

僵硬性

在这里插入图片描述
在这里我们提到了耦合度的问题,**耦合度描述了一个对象依赖于另外一个对象的程度。**松耦合的对象可以独立发生变化,彼此互相不影响。这也是我们系统设计的目标。

class A{int x;...
}
class B extends A{void b(){x=5;}...
}

如上述例子,我们的B强依赖于A(继承关系),如果我们修改了A中的变量名称,那么我们也需要修改B里面的代码,这样B才能正常工作。这样的代码我们是不提倡的。我们尽量用组合关系(弱依赖)而不是继承关系

class B {a = new A();void b(){a.x=5;}...
}

Erich Gamma(GoF)原则

  1. 尽量用组合关系而不是继承关系。
  2. 对接口进行编程,而不是对实现进行编程。

脆弱性

在这里插入图片描述
脆弱性啊,就是传说中的修改完了一个bug,会引来新bug。

不可移植性

在这里插入图片描述
我们一定要高内聚低耦合的设计,不可移植性是低内聚高耦合的。

粘滞性

在这里插入图片描述环境的粘滞性在布局的时候很麻烦。

不必要的复杂性

在这里插入图片描述本以为自己是深谋远虑,结果你以为的未来却并没有发生。

不必要的重复性

在这里插入图片描述

不透明性

在这里插入图片描述
写代码本来有代码规范,各种类名方法名应该是有可解释性的。

设计模式 是软件开发人员在软件开发过程中,针对一般问题的最佳解决方案,该方案能够被程序员反复应用于解决类似问题

设计模式 – 概述有相关类型的更全面的总结
设计模式类型事例有很通俗的类型例子讲解,可以提供感性认识
我们的设计模式学习中主要包含如下内容。
JAVA相关DPs
在这里插入图片描述今日写文音乐《有可能的夜晚》周深版

不能亲口说晚安
那就唱给你听吧

当你突然看我的时候
当话语开始多余的时候
当心慢慢靠近的时候
这时天刚好黑了
当我快忍不住的时候
当别人开始多余的时候
当爱悄悄来临的时候
这时天刚好黑了
无需言语
无尽浪漫
无限可能的夜晚
让蜡烛代替所有灯
让音乐代替话语声
此时无声胜有声
如果要我开口
只能说一句话
让我成为你的有可能
让yes代替所有no
让勇敢代替所有酒
刚下眉头却上心头
如果要我选择
只能爱一个人
让我成为你的有可能

当你突然看我的时候
当话语开始多余的时候
当心慢慢靠近的时候
这时天刚好黑了
当我快忍不住的时候
当别人开始多余的时候
当爱悄悄来临的时候

Quand il me prend dans ses bras 当他拥我入怀
Qu’il me parle tout bas 低声对我说话 Je
vois la vie en rose 我看见玫瑰色的人生
Il me dit des mots d’amour 他对我说爱的言语
Des mots de tous les jours 天天有说不完的情话
Et ça me fait quelque chose 这对我来说可不一般
让yes代替所有no
让勇敢代替所有酒
刚下眉头却上心头
如果要我选择只能爱一个人
让我成为你的有可能

如果只能说一句话
让我成为你的有可能

这篇关于软件架构设计模式——从腐烂的不良设计中品读软件的人格障碍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/208427

相关文章

MyBatis设计SQL返回布尔值(Boolean)的常见方法

《MyBatis设计SQL返回布尔值(Boolean)的常见方法》这篇文章主要为大家详细介绍了MyBatis设计SQL返回布尔值(Boolean)的几种常见方法,文中的示例代码讲解详细,感兴趣的小伙伴... 目录方案一:使用COUNT查询存在性(推荐)方案二:条件表达式直接返回布尔方案三:存在性检查(EXI

安装centos8设置基础软件仓库时出错的解决方案

《安装centos8设置基础软件仓库时出错的解决方案》:本文主要介绍安装centos8设置基础软件仓库时出错的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录安装Centos8设置基础软件仓库时出错版本 8版本 8.2.200android4版本 javas

如何确定哪些软件是Mac系统自带的? Mac系统内置应用查看技巧

《如何确定哪些软件是Mac系统自带的?Mac系统内置应用查看技巧》如何确定哪些软件是Mac系统自带的?mac系统中有很多自带的应用,想要看看哪些是系统自带,该怎么查看呢?下面我们就来看看Mac系统内... 在MAC电脑上,可以使用以下方法来确定哪些软件是系统自带的:1.应用程序文件夹打开应用程序文件夹

Python中的可视化设计与UI界面实现

《Python中的可视化设计与UI界面实现》本文介绍了如何使用Python创建用户界面(UI),包括使用Tkinter、PyQt、Kivy等库进行基本窗口、动态图表和动画效果的实现,通过示例代码,展示... 目录从像素到界面:python带你玩转UI设计示例:使用Tkinter创建一个简单的窗口绘图魔法:用

Ubuntu 怎么启用 Universe 和 Multiverse 软件源?

《Ubuntu怎么启用Universe和Multiverse软件源?》在Ubuntu中,软件源是用于获取和安装软件的服务器,通过设置和管理软件源,您可以确保系统能够从可靠的来源获取最新的软件... Ubuntu 是一款广受认可且声誉良好的开源操作系统,允许用户通过其庞大的软件包来定制和增强计算体验。这些软件

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

在JS中的设计模式的单例模式、策略模式、代理模式、原型模式浅讲

1. 单例模式(Singleton Pattern) 确保一个类只有一个实例,并提供一个全局访问点。 示例代码: class Singleton {constructor() {if (Singleton.instance) {return Singleton.instance;}Singleton.instance = this;this.data = [];}addData(value)

软件设计师备考——计算机系统

学习内容源自「软件设计师」 上午题 #1 计算机系统_哔哩哔哩_bilibili 目录 1.1.1 计算机系统硬件基本组成 1.1.2 中央处理单元 1.CPU 的功能 1)运算器 2)控制器 RISC && CISC 流水线控制 存储器  Cache 中断 输入输出IO控制方式 程序查询方式 中断驱动方式 直接存储器方式(DMA)  ​编辑 总线 ​编辑

怎么让1台电脑共享给7人同时流畅设计

在当今的创意设计与数字内容生产领域,图形工作站以其强大的计算能力、专业的图形处理能力和稳定的系统性能,成为了众多设计师、动画师、视频编辑师等创意工作者的必备工具。 设计团队面临资源有限,比如只有一台高性能电脑时,如何高效地让七人同时流畅地进行设计工作,便成为了一个亟待解决的问题。 一、硬件升级与配置 1.高性能处理器(CPU):选择多核、高线程的处理器,例如Intel的至强系列或AMD的Ry

【STM32】SPI通信-软件与硬件读写SPI

SPI通信-软件与硬件读写SPI 软件SPI一、SPI通信协议1、SPI通信2、硬件电路3、移位示意图4、SPI时序基本单元(1)开始通信和结束通信(2)模式0---用的最多(3)模式1(4)模式2(5)模式3 5、SPI时序(1)写使能(2)指定地址写(3)指定地址读 二、W25Q64模块介绍1、W25Q64简介2、硬件电路3、W25Q64框图4、Flash操作注意事项软件SPI读写W2