Uml 需要对设计的意见/提示吗

Uml 需要对设计的意见/提示吗,uml,Uml,我真的很想听听你的意见,或者对以下设计问题的任何提示,因为我有点困惑 我有两个对象,客户机和服务器,其中客户机可以引用许多服务器对象。每个服务器对象都提供一个方法,客户机可以调用该方法 我想做的是改变这个关系,这样客户机就可以引用更多的服务器类型,例如服务器1和服务器2。我目前正在考虑将多态性用于接口或抽象类。例如,Server_1和Server_2扩展/实现了服务器,而客户端仍然保留服务器引用列表。这有什么意义吗?或者有更好/不同的方法吗 此外,我希望能够创建到服务器1和服务器2的调用链并存储

我真的很想听听你的意见,或者对以下设计问题的任何提示,因为我有点困惑

我有两个对象,客户机和服务器,其中客户机可以引用许多服务器对象。每个服务器对象都提供一个方法,客户机可以调用该方法

我想做的是改变这个关系,这样客户机就可以引用更多的服务器类型,例如服务器1和服务器2。我目前正在考虑将多态性用于接口或抽象类。例如,Server_1和Server_2扩展/实现了服务器,而客户端仍然保留服务器引用列表。这有什么意义吗?或者有更好/不同的方法吗

此外,我希望能够创建到服务器1和服务器2的调用链并存储它。你知道我该怎么做吗?另外,您将以什么方式在Java中实现它?没有代码,只有想法

以便客户端可以引用更多的服务器类型

继承类继承或接口继承是一种方法

也被称为专业化

您的第一个场景类似于:

........................................................................
..+--------------------------+..............+------------------------+..
..|         <<class>>        |..............|        <<class>>       |..
..|       CustomerClass      |..............|       ServerClass      |..
..+--------------------------+....uses......+------------------------+..
..| [+] Servers: ServerClass +-----------< >+ [+] void DoSomething() |..
..+--------------------------+..............+------------------------+..
........................................................................
注:<>表示未填充的钻石

然后:

我喜欢将聚合关联与继承关联分开,作为不同的图表

但是,在这种情况下,如果您仍然需要两者:

....................................
..+------------------------------+..
..|           <<class>>          |..
..|         CustomerClass        |..
..+------------------------------+..
..| [+] Servers:     ServerClass |..
..+--------------+---------------+..
.................|..................
.................|..................
.................|..................
................< >...........................................................
..+--------------+---------------+.........+-------------------------------+..
..|         <<abstract>>         |.........|          <<concrete>>         |..
..|         ServerClass          |.........|        PDFPrinterClass        |..
..+------------------------------+.../|....+-------------------------------+..
..| [+] void Print() <<virtual>> |--< |-+--+ [+] void Print() <<override>> |..
..+------------------------------+...\|.|..+-------------------------------+..
........................................|.....................................
........................................|..+-------------------------------+..
........................................|..|         <<concrete>>          |..
........................................|..|       WordPrinterClass        |..
........................................|..+-------------------------------+..
........................................+--+ [+] void Print() <<override>> |..
...........................................+-------------------------------+..
..............................................................................
创建对服务器1和服务器2的调用链并将其存储

您可能希望了解命令软件设计模式:


祝你好运。

客户端可以引用服务器是什么意思。客户端是否存储指向服务器对象的变量?@jollarvia,这意味着客户端可以与多个服务器或[client]-*[server]关联。因此,客户端将有一个指向服务器对象的数据结构。感谢您的回复,它确认了我正在考虑的操作。对于我问题的第一部分,这是一个可以接受的答案。关于第二个问题,特别是关于存储呼叫链的问题,有什么想法吗?
....................................
..+------------------------------+..
..|           <<class>>          |..
..|         CustomerClass        |..
..+------------------------------+..
..| [+] Servers:     ServerClass |..
..+--------------+---------------+..
.................|..................
.................|..................
.................|..................
................< >...........................................................
..+--------------+---------------+.........+-------------------------------+..
..|         <<abstract>>         |.........|          <<concrete>>         |..
..|         ServerClass          |.........|        PDFPrinterClass        |..
..+------------------------------+.../|....+-------------------------------+..
..| [+] void Print() <<virtual>> |--< |-+--+ [+] void Print() <<override>> |..
..+------------------------------+...\|.|..+-------------------------------+..
........................................|.....................................
........................................|..+-------------------------------+..
........................................|..|         <<concrete>>          |..
........................................|..|       WordPrinterClass        |..
........................................|..+-------------------------------+..
........................................+--+ [+] void Print() <<override>> |..
...........................................+-------------------------------+..
..............................................................................