我知道中介模式的目的是讓每個同事不必互相認識就可以相互溝通。所有同事都只知道調解員。關於調解員設計模式的同事?
設計模式不是針對特定的語言,但我的問題是特定於Java。
我想把子類的領域給超,但在Java中會有一些問題:
在Java中,接口是
public static final
所有字段,它也不是一個很好的做法,使用這樣的領域。 (Why)如果我把參考調解人在接口同事,然後每個具體的同事不能改變其調解人在運行時,因爲它是最後:
interface Colleague { Mediator mediator; // Which is public static final }
所以在該程序,
{ // ... colleague.changeMediator(newMediator); // this is impossible. // ... }
。
作爲下面的結構,相反,同事是一個抽象類。那麼這個模式就沒有用了,因爲具體的同事可能已經繼承了一些其他的類,並且Java中不允許多重繼承。
Foo不能成爲具體的同事,因爲它已經繼承了Bar。
public class Foo extends Bar, Colleague { // this is impossible. // ... }
如果沒有辦法把在界面同事參考調停,我已經想到的解決方案是:
作爲this example,刪除引用。假設沒有必要保留對調解員的引用。 (這會導致任何問題嗎?)
只需爲每個具體的同事定義一個參考。 (但這意味着代碼重複。)
作爲design-patterns-stories.com的示例,讓同事抽象,並接受沒有人會擴展同事的事實。
調解模式的結構(從design-patterns-stories.com):
你說的是「領域」,「這個改變」等,但是你沒有發佈任何代碼行,所以我不明白你想問什麼。 –