Uml 需要对设计的意见/提示吗
我真的很想听听你的意见,或者对以下设计问题的任何提示,因为我有点困惑 我有两个对象,客户机和服务器,其中客户机可以引用许多服务器对象。每个服务器对象都提供一个方法,客户机可以调用该方法 我想做的是改变这个关系,这样客户机就可以引用更多的服务器类型,例如服务器1和服务器2。我目前正在考虑将多态性用于接口或抽象类。例如,Server_1和Server_2扩展/实现了服务器,而客户端仍然保留服务器引用列表。这有什么意义吗?或者有更好/不同的方法吗 此外,我希望能够创建到服务器1和服务器2的调用链并存储它。你知道我该怎么做吗?另外,您将以什么方式在Java中实现它?没有代码,只有想法 以便客户端可以引用更多的服务器类型 继承类继承或接口继承是一种方法 也被称为专业化 您的第一个场景类似于:Uml 需要对设计的意见/提示吗,uml,Uml,我真的很想听听你的意见,或者对以下设计问题的任何提示,因为我有点困惑 我有两个对象,客户机和服务器,其中客户机可以引用许多服务器对象。每个服务器对象都提供一个方法,客户机可以调用该方法 我想做的是改变这个关系,这样客户机就可以引用更多的服务器类型,例如服务器1和服务器2。我目前正在考虑将多态性用于接口或抽象类。例如,Server_1和Server_2扩展/实现了服务器,而客户端仍然保留服务器引用列表。这有什么意义吗?或者有更好/不同的方法吗 此外,我希望能够创建到服务器1和服务器2的调用链并存储
........................................................................
..+--------------------------+..............+------------------------+..
..| <<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>> |..
...........................................+-------------------------------+..
..............................................................................