有如下接口:package pojo;public interface Operate {
void doit();
}
还有个People类:package pojo;public class People{
private String name;
private int deposit;
private int money;

public int getMoney() {
return money;
}
public void setMoney(int money) {
this.money = money;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getDeposit() {
return deposit;
}
public void setDeposit(int deposit) {
this.deposit = deposit;
}
}
然后有一些业务功能://取款
public class Qukuan implements Operate
{
     public void doit(){....}
}
//存款
public class Cunkuan implements Operate
{
     public void doit(){....}
}//转账
public class Zhuanzhang implements Operate
{
     public void doit(){....}
}//程序入口
public class Program
{
     public static void main(String ars[])
     {
           Operate op = new Qukuan();
           op.doit();
     }
}
现在我的问题来了,main方法里的op.doit()函数无法操作People类,要怎样使它能操作People类。有人说要我在Operate接口中的doit()方法添加People参数,但是取款功能和转账功能需要不同数量的People参数。如果写两个doit()方法也可以,但是如果又来了某个业务需要3个People参数,不可能去改接口吧。所以,麻烦大家告诉我要怎么使doit()方法在不同的业务类里面操作People。
多谢!

解决方案 »

  1.   

    operate应该是people的行为吧,用策略模式,在people类里添加operate接口吧
      

  2.   


    我只想知道怎样才能在doit()方法里操作People,谢谢
      

  3.   

    取、存、转各自设计成类这样好吗?
    它们应表示的是动作,不是吗?
    而且主体是ATM还是人有待考虑,个人倾向于ATM
    People中再聚合也未尝不可
      

  4.   

    doIt(List<people> peoples)这样可以不
      

  5.   

    在Qukuan中申明pepole 给出get和set方法;
    在执行doit(){....}之前,将peple示例话set进去
      

  6.   

    只要给的people实体不同,那么参数就不同
      

  7.   

    +1 你对几个人操作,在不同的业务里是不同的,但在相同的业务里是相同的,比如 存 取 两个类里,都需要一个people属性,然后在 doit()  方法里对 people对象操作即可,
    转账需要对两个people操作,也在转账类里操作people对象即可,
    需要在操作前set一下.