- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
对于下面的示例代码...
有没有办法链接不同类的实例
?提供的示例是连接属于不同类实例的方法的失败尝试。
此外,在同一示例中,Client2
与 Client3
共享错误对象。 在子类和非关联类之间共享对象
的更有效方法是什么?
为了清楚起见,我还内嵌了评论。
感谢您的时间和帮助。
示例代码
public class StubRunner
{
public run(){
ClientFactory client = new ClientFactory();
//not correct. But, this is how i want to finally chain methods
//belonging to different class instances. Please advise.
client.getClient1().testClient1().getClient2().testClient2().assert(...);
}
}
public class ClientFactory
{
public Client1 getClient1(){return new Client1();}
public Client2 getClient2(){return new Client2();}
}
public class BaseClient
{
public Errors errors = null;
}
public class Client1 extends BaseClient
{
public void testClient1(){...}
}
public class Client2 extends BaseClient
{
public void testClient2()
{
//here i am directly passing the error object
//what is a better way?
//is there a more efficient way to make the SAME error object
//available to Client3
new Client3(this.errors).testClient3();
...
}
}
public class Client3 extends BaseClient
{
public Client3(Errors errors){this.errors = errors;}
public void testClient3(){...}
}
最佳答案
当我想要编写短的方法调用链但我希望方法相对于任何类型的状态进行更改时,我通常会使用 lambda 表达式。至于您的场景,您的每个测试都将是一个 lambda 表达式,这意味着我会将 testClient4 方法传递给 testClient3 方法,将 testClient3 方法传递给 testClient2 方法,等等。但是,代码变得越来越丑陋,因为你的方法调用链变得很长。
=> 您可以使用 Fluent 接口(interface):您可以让每个方法执行一些逻辑,然后返回一个实例,您可以在该实例上调用要执行的下一个内联方法。
显然,每个实例都需要引用下一个内联实例,并知道它将调用哪个实例(Client1 将引用 Client2,Client2 引用 Client3,等等)。
这可行,但我不喜欢这种情况!我想说这更像是一个技巧而不是干净的编码。您应该分别对每个客户端使用流畅的接口(interface),除非您的方法之一实际上返回另一个实例:
client1.testClient1().testClient2().testClient3() with each test method returning an instance of the next client if there is a good reason for it
但是在测试方法之间插入 getClient 方法是没有意义的...
关于java - 不同类实例的链接方法和对象共享,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45131285/
所以我有这个 UltraTicTacToe 游戏,我正在用 HTML/CSS/JS 编码。它由表中表中的表组成。当您单击 X 或 O 时,我想要突出显示您应该进入的下一个 TicTacToe 牌 ta
Some text Some more text 如何让每个 .example 的 .whatever 包含其 .test 的内容? 例如,如果代码是这样的: Som
我是一名优秀的程序员,十分优秀!