YuezhenQin / javaweb

0 stars 0 forks source link

设计: 如何根据需求做模块划分?需要定义哪些类,每个类需要有哪些属性和方法,类之间应该如何交互?如何将类组装成一个可执行程序并提供执行入口? #13

Open YuezhenQin opened 1 month ago

YuezhenQin commented 1 month ago
  1. 针对于大型的、复杂的需求开发,进行模块划分,将需求简单地划分为若干个小的、独立的功能模块。
  2. 划分职责 (SRP) 并识别出有哪些模块和类。
    • 若一个类依赖的类过多,不符合高内聚、低耦合的代码设计思想,则对该类进行拆分。
  3. 定义类及其属性和方法
  4. 定义类之间的交互关系
  5. 将类组装起来并提供执行入口
YuezhenQin commented 1 month ago

1. 划分职责并识别有哪些核心类

类是对现实世界中的事物的建模。但是并不是每个需求都能映射到现实世界,也并不是每个类都能与现实世界中的事物一一对应。对于一些抽象的概念,我们是无法通过映射现实世界中的事物的方式来定义类的。

YuezhenQin commented 1 month ago

2. 定义各个类中的属性和方法

YuezhenQin commented 1 month ago

3. 定义类之间的交互关系

类之间存在哪些交互关系呢?UML 中定义了类之间的 6 中关系:泛化(子类继承父类)、实现(接口与实现类)、聚合(A包含B,A对象和B对象的生命周期相互独立,B由构造方法外部传入)、组合(A对象包含B对象,B依赖于A不可独立存在,B于构造方法内部创建出来)、关联(A包含B作为成员变量)和依赖(A包含B作为成员变量、成员方法的返回值、参数或局部变量)。

YuezhenQin commented 1 month ago

4. 将类组装起来并提供执行入口

这个入口可以是一个main(),也可以是一组提供给外部调用的 API。通过这个入口,我们能够执行代码。