如果我有很少的工厂方法返回非公共类型和配对方法集合给出这种非公共类型的变量怎么办?这会在NetBeans中带有标题警告消息.
结果公共API将只包含两组配对方法.原因是密封我的类型层次结构(如Scala中的封装类),并允许用户仅通过工厂方法实例化这些类型.所以我们在某种意义上得到了DSL.
例如,Schedule类由日历字段的约束表示.有一些类型的约束 - Range,Singleton,List,FullSet - 以NumberSet接口作为根.我们不希望公开这些类型以及Schedule如何与它们进行交互.我们只想要用户的规范.所以我们将NumberSet包私有化.在课程表中,我们为约束创建了一些工厂方法:
NumberSet singleton(int value);
NumberSet range(int form, int to);
NumberSet list(NumberSet ... components);
Run Code Online (Sandbox Code Playgroud)
以及创建Schedule对象的一些方法:
Schedule everyHour(NumberSet minutes);
Schedule everyDay(NumberSet minutes, NumberSet hours);
Run Code Online (Sandbox Code Playgroud)
用户只能以下列方式使用它们:
Schedule s = Schedule.everyDay( singleton(0), list(range(10-15), singleton(8)) );
Run Code Online (Sandbox Code Playgroud)
这不好主意吗?