系统架构设计(六):面向对象设计

核心概念

概念 含义说明
对象(Object) 现实世界事物的抽象表示,包含属性(状态)和方法(行为)
类(Class) 一类对象的抽象模板
继承(Inheritance) 子类继承父类的属性和行为,实现代码复用
封装(Encapsulation) 将数据与操作封装在一起,隐藏实现细节,提供接口
多态(Polymorphism) 同一接口,不同实现,提高扩展性与灵活性
抽象(Abstraction) 抽取共性,屏蔽复杂实现,关注接口而非实现

本系统采用面向对象设计思想(OOD) ,通过对业务实体的抽象建模,提高系统的可复用性、可扩展性和可维护性。主要体现在以下方面:

  1. 对象建模 :将系统中的关键业务元素抽象为类(如用户、订单、支付等),每个类包含其属性和操作,体现高内聚
  2. 封装性设计:对外提供公共接口,内部数据通过 getter/setter 控制访问,保护类内部状态;
  3. 继承结构优化:通过父类抽取共性方法,子类继承并重写,减少冗余代码;
  4. 多态使用 :接口 + 实现类组合,便于后续增加新行为而无需修改原有代码,实现开闭原则
  5. 使用设计模式:如采用工厂模式实现对象创建,策略模式实现算法切换,增强灵活性。

主要原则(五大原则 SOLID)

原则 含义与目的 典型应用
S - 单一职责原则 每个类只负责一项功能 控制类拆分、低耦合
O - 开闭原则 对扩展开放,对修改关闭 使用接口、多态
L - 里氏替换原则 子类可以替换父类,功能不受影响 避免违反继承契约
I - 接口隔离原则 不应强迫类依赖它不使用的方法 拆分接口
D - 依赖倒置原则 面向抽象编程,依赖接口而非具体实现 依赖注入、工厂模式

面向对象设计模式(可用于写作题举例)

类别 模式名称 典型用途
创建型 工厂方法、单例、建造者 控制对象创建过程
结构型 适配器、桥接、装饰、代理 简化结构,解耦对象
行为型 策略、观察者、状态、模板 控制行为变化、通信

类图(UML)常用符号速记

  • 类图表示:+ public- private# protected
  • 继承:实线空心三角箭头
  • 实现:虚线空心三角箭头
  • 组合:实线菱形 → 强拥有
  • 聚合:空心菱形 → 弱拥有
  • 关联:实线 → 双方持有引用
  • 依赖:虚线 → 使用而非持有

类的类型

类的分类方式概述

在面向对象设计中,根据类的职责、作用和结构功能,常将类划分为以下几种典型类型:

类别 定义/说明 示例
实体类(Entity) 用于封装系统中与业务对象相关的数据和行为 订单类、学生类、账户类
控制类(Control) 负责处理业务逻辑,协调实体类与界面类的交互 订单管理类、支付处理类
边界类(Boundary) 负责与系统外部交互,如用户界面、外部系统接口 用户界面类、API 网关类
抽象类(Abstract) 不可实例化,仅用于继承和统一接口 抽象图形类(Shape)、接口类
工具类(Utility) 提供通用静态方法,无状态、无对象行为 StringUtil、DateHelper
数据访问类(DAO) 专门用于访问数据库,负责 CRUD 操作 UserDAO、OrderDAO
配置类 封装系统配置、参数信息 Config、Settings

核心三类(UML中常见分类)

在 UML 和面向对象分析设计(如 OOA/OOD)中,最常见的是"实体类、边界类、控制类"三类角色划分,如下:

实体类(Entity Class)

  • 职责:负责封装业务对象的属性和行为;
  • 特点:通常与数据库表结构一一对应;
  • 示例CustomerInvoiceProduct 等;
  • 在类图中:通常较为核心,具有属性与方法。

边界类(Boundary Class)

  • 职责:用于处理系统与外部(如用户、设备、系统)之间的交互;
  • 表现形式:GUI 界面类、API 接口类;
  • 示例LoginPagePaymentAPI
  • 在用例图中:常与参与者关联。

控制类(Control Class)

  • 职责:负责处理用例的执行逻辑,协调边界类和实体类;
  • 特性:业务流程的调度者;
  • 示例OrderProcessorPaymentController
  • 设计建议:一个控制类对应一个或一组用例。

示例

请说明系统中"客户登录"用例可涉及哪些类类型,并说明其职责。

解答:

边界类LoginUI

  • 用于接收用户输入的用户名和密码,与用户交互;
  • 显示登录结果信息。

控制类LoginController

  • 接收来自 UI 的请求,负责协调验证流程;
  • 调用实体类与数据库进行认证处理。

实体类User

  • 表示用户对象,封装用户名、密码、权限等信息;
  • 提供密码校验等方法。

数据访问类UserDAO

  • 负责从数据库中查询用户信息,进行登录校验。
相关推荐
却道天凉_好个秋2 小时前
系统架构设计(十一):架构风格总结2
架构·系统架构
掘金-我是哪吒7 小时前
分布式微服务系统架构第133集:运维服务器6年经验,高并发,大数据量系统
运维·服务器·分布式·微服务·系统架构
snpgroupcn12 小时前
天能股份SAP系统整合实战:如何用8个月实现零业务中断的集团化管理升级
运维·系统架构
却道天凉_好个秋2 天前
系统架构设计(五):构件
系统架构
蓝天居士2 天前
软考 系统架构设计师系列知识点之杂项集萃(60)
系统架构
掘金-我是哪吒3 天前
分布式微服务系统架构第131集:fastapi-python
分布式·python·微服务·系统架构·fastapi
flying robot3 天前
小结:Android系统架构
android·系统架构
递归尽头是星辰3 天前
开发者的测试复盘:架构分层测试策略与工具链闭环设计实战
系统架构·集成测试·契约测试·测试复盘·分层测试策略
蓝天居士3 天前
软考 系统架构设计师系列知识点之杂项集萃(58)
系统架构