如何在java中创建复杂的Fluent界面?

时间:2015-11-21 12:46:18

标签: java fluent chain

我知道如何设计简单流畅的界面类

我想知道如何写这样的东西(某些方法访问特定方法不是全部)

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 个答案:

答案 0 :(得分:1)

通常你创建一个核心类,并编写很多接口,然后通过一些入口点将它作为初始接口传递给用户:

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();
}

...
相关问题