作者GERRYccc (月狼)
看板java
标题Re: [问题] 请问设计模式里的物件回传
时间Tue May 1 20:12:11 2012
public class A {
public void someMethod(SomeBean sb){
// 透过SomeBean将物件塞满资料丢进来...
Binner b = new A.Binner(sb.getArg1, sb.getArg2, sb.getArg3, sb.getArg4);
// 也可以把整个SomeBean往内部类别丢...
// 这里有点忘了怎麽实体化内部类别= =||
// 有误请指正
b.doSomethingMethod();
}
class Binner {
private int param1;
private String param2;
private long param3;
private boolean isLimit;
// Binner 的建构子
Binner(int arg1, String arg2, long arg3, boolean arg4){
this.param1 = arg1;
// ... 依此类推
}
// 做某事会被呼叫的method
public String doSomethingMethod(){
// todo......
return "str";
}
}
}
// 存载资料用的Bean 物件
public class SomeBean(){
private int arg1;
private String arg2;
private long arg3;
private boolean arg4;
// 底下当然有些 getter & setter
}
这样做完之後当外人呼叫你的class A.someMethod 的时候
就会看到需要带入一个 SomeBean
请在注解处&SPEC上写明哪些case各需要SomeBean内的哪些资料...
那外人应该就知道该怎麽用了!
作法百百种,乱乱写一种给你参考...
没用IDE写这段,若遇到缪误请见谅!
ps. 我不懂 design pattern 若你能为我补充说明一下,那就太好了! :)
※ 引述《rokaku (昵称能用来干嘛?)》之铭言:
: 最近在写一个java class供别人呼叫,
: 所以外人可写一class来操作我的内部class
: 其中有一个method是需要指定某内部类别的资料
: 问题就卡在既然是内部类别资料, 我就不应该将内部资料export出来
: 想到一种做法是"将要指定的资料"做成一个类别放在内部类别里供呼叫
: 可是如果外部class完全不知内部有何资料, 那这个方法就行不通
: 查了一下design pattern, 好像没有讲如何回传内部类别
: 或者说有更好的处理方法, 希望有高人可以指点一下
: 先谢谢了
--
1F:推 rokaku:那如果SomeBean的资料是runtime才能决定,那该怎麽办才好呢? 05/02 19:13
2F:→ rokaku:其实我也是卡住了才去查design pattern,也算是初学者啦~~ 05/02 19:15
内部class需要的资料可能随时不同?? 而且没有定律??
如果真的有这麽随机的资料,在JDK5以後有支援 int...
不指定个传入参数同型别的可以用,或是阵列??
但内部class需要什麽资料应该是由制作API的你决定的,
若是有不同的case会有需要不同的资料,
那可以拆开成不同的method做资料处理,执行业务流程时再呼叫共用的Method,
或是下一位版友回应说的封装 interface 当作传入参数,
再用不同的SomeBeanCaseA SomeBeanCaseB去实作上面的interface。
(当然SPEC也要说明什麽Case时用哪一个SomeBean传哪些资料)
3F:推 rokaku:传入资料是从socket过来的,所以仅知是ByteArray,但还是说谢 05/03 18:40
那就制定format吧... 第A码-第B码为第一栏,B-C为第二栏...
或是透过 JSON 或 XML 等资料格式传递後再解析。
※ 编辑: GERRYccc 来自: 1.162.72.244 (05/04 00:51)