2015-11-21 53 views
0

我知道如何設計簡潔流暢的接口類,但如何在java中創建複雜的流利接口?

我想知道怎麼寫這樣的事情(一些方法訪問特定的方法不是全部)

MyClass cls = new MyClass() 
       .A() 
       .A1() 
       .A2() 
        .A01()       
        .A02() 
       .B() 
       .B1() 
       .C() 
       .C1() 
        .C01()       
        .C02() 
  • MyClass的()可以獲得A(),B(),C()
  • A()可以僅訪問A1(),A2()
  • A2()可以訪問A01(),A02()
  • B()可以訪問B1()
  • C()可以訪問C1()
  • C1()可以只有訪問C01(),C02()

我怎樣才能設計流暢的界面和限制在java訪問?

+1

你打電話'上'.A02()'的結果,即使你的縮進試圖避免它。你打算如何處理這個問題? –

回答

1

通常你創建一個核心類,並寫了很多的接口,然後將它傳遞給用戶通過一些進入點的初始界面:`.B()

public class EntryPoint { 
    MyClass myClass() { 
     return new Implementation(); 
    } 
} 

// not visible to the user 
class Implementation implements MyClass, A, B, C, A1, A2, ...{ 
    Implementation A() { ... return this; } 
    Implementation A1() { ... return this; } 
    ... 
} 

public interface MyClass { 
    A A(); 
    B B();  
    C C(); 
} 

public interface A { 
    A1 A1(); 
    A2 A2(); 
} 

public interface B { 
    B1 B1(); 
} 

public interface C { 
    C1 C1(); 
} 

...