弱弱的问一个设计模式问题,在命令模式中,所有的命令都实现一个接口,这个接口一般都定义一个void Execute()函数,如果我具体的命令实现时,实际需要的函数是private int Execute(Person p)这样的情况我应该怎么解决?
请高手指教。

解决方案 »

  1.   

    可以在实现类里加一个属性Person 
    Excecute()方法还和接口一样,有点像给线程传参数
      

  2.   

    楼上的这种实现还不如方法加个参数
    既然command满足不了你的需求就换,设计模式的应用是你在设计后发现与某一模式才引入不是套用
      

  3.   

    但是我现在实现的是:用户的每一个操作都能在数据库中留下一条记录,好像只有Command模式最适合这种情况吧?后来发现“insert”动作,实际是private int Execute(Person p);而“delete”动作实际是private bool Execute(int personID);——每个command都有不同的情况,如何实现自一个接口?所以有此一问。
    请高手指教。
      

  4.   

    已经很明显在这用command行不通,还要往上套....IPersist
    {
       Add(EntityBase entity);
       Delete(object entityKey);
       Save(EntityBase entity);
       EntityBase  Get(object entityKey);
    }如果是VS2005可以用泛型解决类型不明确的问题
      

  5.   

    你说的是struts吧?一般struts框架里有一个默认的执行提交的方法叫Execute()