初学者必知的系统架构开发设计原则

时间:2025-09-17  作者:Diven  阅读:0

很多开发者在面对设计/架构时,常常有想学但无从下手,学了又不会用的困扰。学习设计并不是只学习设计模式,在进行设计时,我们需要底层思想来支持,这里的底层思想其实就是设计原则,而设计原则则是面向对象编程基于现实背景衍生出来的一套规则,用来解决开发中的痛点。

初学者必知的系统架构开发设计原则

一个好的架构需要反复进行思考以及设计。

一、面向对象

什么是面向对象? 先来看下基本定义:

面向对象是风格,会以类作为代码的基本单位,通过对象访问,并拥有封装、继承、多态、抽象四种特性作为基石,可让其更为智能。代表语言Java。

四大特性(也有人说三种,不要纠结)

(1) 封装

封装也被称为信息隐藏。类通过暴露有限的访问接口,授权外部仅能通过类提供的方式(或者叫函数)来访问内部信息或者数据。

将用户信息隐藏在内部,在确实需要访问时,再通过暴露出来的唯一入口进行,这一过程就是封装,合理运用封装可以降低模块间依赖关系(松耦合)。

(2) 继承

“继承”是面向对象中的第二特征,体现了类与类之间的“is-a”关系。当两个类进行继承关联绑定的时候,子类自动具备来自于父类的属性和行为。可以提升复用性解决模板代码问题,提升开发效率的同时也解决了错写,漏写带来的问题。

(3) 多态

一句话概括“多态”:一个对象有多种形态。

合理运用多态可以写出易扩展的代码,基于接口而非实现编程和开闭原则的核心

(4) 抽象

抽象的目的是为了隐藏方法的具体实现,让调用者只需要关心方法提供了哪些方法(功能),并不需要知道这些功能是如何实现的。在Java中体现方式是接口和抽象类

(5) 接口和抽象类的区别

接口更侧重于功能的设计,并且能将具体实现与调用者隔离,一般要以接口隔离原则设计接口及粒度越细越好

抽象类更侧重于提升复用性,在原有的基础上预留扩展点供开发者灵活实现

区别:接口可以降低模块间耦合性,抽象类可提升复用性。

相同点:均有较好的扩展性,符合开闭原则

诞生背景

谈及面向对象必定离不开面向过程,毕竟就是由面向过程衍变而来,吸收其大部分优点并解决其痛点。那什么是面向过程呢?基本定义如下:

分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了,更侧重于功能的设计。代表语言C

面向对象在编程之前需要基于四大特性对功能做建模设计,可以提高代码安全性、复用性、扩展性,更易于维护。既然面向对象这么智能为什么面向过程语言还没有被淘汰?其实面向对象语言的智能是针对我们开发者的,为了能让我们能写出易于维护的代码会多做一步设计,虽然离开发者更近了 但离机器却远了,毕竟机器只认识0和1而已。C语言规则简单易于形成机器码,所以执行效率高,这也是其没有被淘汰的原因。

二、六大设计原则才是一切设计的基石

设计原则是基于面向对象思想衍变出来的一些规则,用来解决实际开发中的一些痛点,是所有设计的底层思想,也是我个人认为是设计/架构领域最重要的知识,所以请大家务必掌握好

(1) 单一设计原则

单一原则很好理解,指一个函数或者一个类再或者一个模块,职责越单一复用性就越强,同时能够间接降低耦合性。

(2) 开闭原则

一句话概括开闭原则:对扩展开放,修改关闭。即充分诠释抽象、多态特性,又是多数行为型设计模式的基础,遍布于各大优秀框架之中,是最重要的一条设计原则,仅这一条原则就能把你的设计能力提高40%

(3) 迪米特法则

基本概念:不该有直接依赖关系的模块不要有依赖。有依赖关系的模块之间,尽量只依赖必要的接口。迪米特法则很好理解并且非常实用,和单一设计原则很像,前者符合松耦合后者符合高内聚。

(4) 接口隔离原则

基本概念:接口的调用者不应该依赖不需要的接口。乍一看与迪米特法则很相似。接口隔离原则与迪米特法则目的很相似,都可以降低模块间依赖关系。但接口隔离更侧重于设计单一接口,提升复用性并间接降低模块间依赖关系,而迪米特法则是直接降低模块间依赖关系。

(5) 里氏替换原则

基本概念:

设计子类的时候,要遵守父类的行为约定。父类定义了函数的行为约定,子类可以改变函数的内部实现逻辑,但不能改变函数原有的行为约定。

里氏替换非常简单并且很容易遵守,在使用继承时,允许复写父类方法,但不要改变其功能。比如自定义View,子类的onMeasure中一定要调用setMeasureaDimission()方法(或者直接使用super),否则会影响父类方法功能(会抛异常),也既违背了里氏替换原则。

(6) 依赖倒置原则

控制反转: 提及依赖倒置便不得不提控制反转,一句话概括:将复杂的程序操作控制权由程序员交给成熟的框架处理,程序员-》成熟的框架为反转,框架应暴露出扩展点由程序员实现。

什么是依赖倒置?

高层模块(使用者)不应依赖低层模块(被使用者),共同依赖同一个抽象,抽象不要依赖具体实现细节,具体实现细节依赖抽象。

其实核心点就是基于接口而非实现编程,高层模块(业务层)不依赖于低层模块(SQLiteDao/RoomDao),而是依赖于抽象(IDao),可见依赖倒置也是开闭原则扩展而来。 区别是依赖倒置更侧重于指导框架的设计,框架层应该尽量将更多的细节隐藏在内部,对外只暴露抽象(抽象类/接口),指导框架设计这方面核心就是控制反转。
责编AJX

猜您喜欢


ROHM(罗姆)作为一家知名的半导体和电子元件制造商,高品质和创新设计赢得了认可。可调电阻作为电子电路中重要的调节元件,ROHM提供了多样化的产品系列,满足不同...
2017-10-26 12:00:25

电阻器作为基础元件,有着着非常重要的作用。随着电子技术的不断发展,对电阻器的性能要求也越来越高。融欣(JACKCON)作为一家知名的电子元器件制造商,其推出的四...
2022-07-04 17:00:57

脉冲线圈测试仪是重要的电子测试工具,应用于电气工程和设备维护领域。主要作用是检测和评估线圈的性能,确保设备在运行过程中的稳定性和安全性。脉冲线圈测试仪能够快速测...
2008-09-27 00:00:00

项目介绍• 基于RT1020芯片,使用 KiCAD绘制原理图和PCB。• 完成PCB打样并焊接。• 实现读取环境温湿度数据,并通过TFT-LCD进行展示。项目介...
2023-09-13 17:38:00

你有没有想过,为什么电器设备标注的功率和实际用电量有时会不一样?这可能与功率因数有关。功率因数修正(Power Factor Correction,简称PFC)...
2023-12-24 00:00:00

金属膜电阻稳定的性能和的应用领域而受到青睐。而提及“宇阳(EYANG)”这一品牌,熟悉电子行业的朋友或许能立刻联想到一系列高品质的产品。那么,这个承载着创新与品...
2020-03-07 01:47:30

在科学实验中,选择合适的实验仪器和设备非常重要。不同类型的实验仪器和设备具有各自独特的参数,这些参数直接影响实验结果的准确性和可靠性。精准度是一个重要参数,指仪...
2020-04-12 00:00:00

可调电阻作为电子电路中的重要元件,应用于电压调节、信号控制等领域。振华科技作为国内知名的电子元器件制造商,其生产的可调电阻以稳定的性能和优良的品质赢得了市场的认...
2025-03-07 09:34:14

插拔式横联组件因其便捷的安装和拆卸特性,应用于多个领域。在电力行业中,插拔式横联组件被用于电气设备的连接,提升了设备的维护效率。在通信领域,这种组件被用于网络设...
2024-06-01 00:00:00