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

标签 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()

如何设计具有流畅接口(interface)的类并限制java中的访问?

最佳答案

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

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

...

关于java - 如何在java中创建复杂的Fluent界面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33843518/

相关文章:

java - 当 target == list[mid] 时,二分查找在 while 循环的第一次迭代中不返回 true

java - 如何设计业务流程层

swift - 快速、 Vapor 和流畅的顺序数据库访问

java - 计算 H2 数据库中的重复行数

java - Spring应用程序中后端消息的国际化支持

c# - 通用类型层次结构的流畅接口(interface)

c# - 如何将枚举类型映射到 tinyint

javascript - 打破 promise 链的好方法是什么?

actionscript-3 - Actionscript 3.0声音链

cocoa - 应用程序最小化时如何使用 Cocoa 的响应程序链