|
2
|
| Roman Pokrovskij Archil Labadze · 技术社区 · 15 年前 |
|
|
1
1
在C++中,我有三种方法使用编译时FSM来验证动作。你可以找到 code on github . |
|
|
2
8
链中的每个步骤都需要返回一个接口或类,该接口或类只包含在当前步骤之后有效使用的方法。换句话说,如果setcolor必须在第一位,
实际上,返回值可能都是
|
|
|
3
1
简短的答案是否定的,没有优雅或方便的方法来强制构建一个类的顺序,当您链接时,它会正确地推动“流畅的接口”。 答案越长,就要扮演魔鬼的拥护者。如果我有依赖属性(即需要先设置其他属性的属性),那么我可以实现它们,如下所示:
(注:以上不映射到任何真实语言,只是伪代码) 所以现在我有一些例外需要担心。如果我不遵守规则,流畅的对象会抛出异常。现在假设我有一个像你一样的声明:
当我抓住
这种优先级检查违背了“流畅接口”方法的精神。这种方法是为方便地配置复杂对象而设计的。当你试图强制执行命令时,你就失去了便利。 为了正确、优雅地实现Fluent接口,有几个指导原则可以让您的类的消费者得到最好的遵守,谢谢:
|
|
|
4
1
也许编译器可以检查方法的调用顺序是否与定义的顺序相同。 这可能是编译器的一个新功能。 或者通过注释,比如:
|
|
|
5
0
您可以实现有效操作序列的状态机,并且在每个方法上调用状态机,并验证是否允许操作序列,或者如果不允许,则引发异常。 不过,对于配置,我不建议使用这种方法,因为它会变得非常混乱,而且不可读。 |
|
|
simply lemon · python上链表的添加方法 1 年前 |
|
|
Anonymous · 为什么在这个例子中self和类名的用法不同? 1 年前 |
|
|
P N Singh · 在CPP Oops中调用对象而不创建它 1 年前 |
|
|
Muthuraj · 如何创建一个通用工厂来创建某种类型的实例[重复] 2 年前 |
|
|
Andy Votava · 从父类定义调用学生方法 2 年前 |