A G*_*ani 0 java javadoc factory-pattern
这可能是一个非常基本的问题,答案非常明显,但我很难搞清楚这一点.
如何知道java工厂模式中涉及的类方法的返回类型.例如,查看下面的代码...什么是方法调用的返回类型以及如何正确地转换它...以及如何为类编写javadoc.
我正在尝试编写一个用户然后可以插入他们的项目的库...
我有一个界面
public interface myInterface
{
public Object doA();
public Object doB();
}
Run Code Online (Sandbox Code Playgroud)
具体课程如下
public class concerete1 implements myInterface
{
public concerete1() {
}
@override
public Object doA()
{ return new String("Hello"); }
@override
public Object doB()
{ return "hello".getBytes(); }
}
Run Code Online (Sandbox Code Playgroud)
和
public class concerete1 implements myInterface
{
public concerete2() {
}
@override
public Object doA()
{ return "hello".getBytes(); }
@override
public Object doB()
{ return new String("Hello"); }
}
Run Code Online (Sandbox Code Playgroud)
我的工厂课程如下
public class factory
{
private myInterface mi;
public myInterface actionProducer(String choice)
{
switch(choice)
{
case "a":
mi = new concerete1();
break;
case "b":
mi = new concerete2();
break;
}
return mi;
}
}
Run Code Online (Sandbox Code Playgroud)
我的测试跑步者课程如下
String result = factory.actionProducer("a").doA();
Run Code Online (Sandbox Code Playgroud)
您不必显式测试工厂方法的返回值的动态类型.静态类型应该告诉您需要知道的所有内容.这意味着返回类型应该是特定的,以告诉您可以对该对象做什么.例如,制作不同实现的映射的工厂方法应返回Map:
public interface MapFactory {
public Map makeMap();
...
}
Run Code Online (Sandbox Code Playgroud)
无论Map是a HashMap还是TreeMapor ConcurrentSkipListMap,您都可以使用这些Map方法与它进行交互.如果事实证明你需要调用ceilingKey,这不是一种Map方法,你就会遇到设计问题.
在你的情况下,你的工厂方法是没有意义的,因为没有更多的特定类型要返回Object,并且你无法使用超出API的返回值Object.无论对象如何实现,更合理的工厂都会返回可以以相同方式交互的对象.
| 归档时间: |
|
| 查看次数: |
3436 次 |
| 最近记录: |