Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 工厂模式与复合豆_Java_Design Patterns_Factory - Fatal编程技术网

Java 工厂模式与复合豆

Java 工厂模式与复合豆,java,design-patterns,factory,Java,Design Patterns,Factory,我试图应用工厂模式来创建用于协议栈的请求bean。现在请求bean与其他bean一起持有属性——这也应该是工厂模式的一部分(因为它们根据堆栈的不同而不同) 比如: public interface Factory { public Request createRequest(); } public interface Request { public Details getDetails(); public void setDetails(Details details); .

我试图应用工厂模式来创建用于协议栈的请求bean。现在请求bean与其他bean一起持有属性——这也应该是工厂模式的一部分(因为它们根据堆栈的不同而不同)

比如:

public interface Factory {
  public Request createRequest();
}

public interface Request {
  public Details getDetails();
  public void setDetails(Details details);
  ..
}

public interface Details {
  public String getSource();
  public void setSource(String s);
  ..
}
我的第一次尝试是为
详细信息
添加工厂方法,但这很快就会成为一种危险-尤其是为工厂传递一些参数

另外,如果您要从另一个工厂传递“细节”实现,setter会变得有点奇怪,因为它们实际上抛出了一个
ClassCastException


出现这种情况的主要原因是,我正在处理一个相当复杂的第三方请求/响应/堆栈实现,我希望将其放入我自己的bean接口中。有没有更合理的方法来实现这一点?

您可以更深入地研究您的设计需求:哪一种有更多不同的变体或实现。把它做成一个工厂,然后离开另一个。在这种情况下,我认为可以使用工厂创建详细信息。(如果请求没有以许多不同的方式执行。)

请指定您希望我们帮助回答的问题查看问题,似乎只有您知道相关库的详细信息以及解决此问题的其他信息。