一些设计上的问题

最近在写Richman4L,有的时候就遇到一些问题。

在游戏中有一些卡片,比如红卡和黑卡,以及陷害卡之类的。

于是有一个基类,叫做Card。

所有的卡片都能够被使用,于是Card应该有一个Use的抽象方法。

然而在使用的时候,有的卡片希望一些参数,比如红卡黑卡希望一个股票,陷害卡希望一个玩家之类的参数。

参数的类型不一样,数目也不一样。

应该提供一个方便的办法让调用者得知这个方法希望什么参数,也能方便的调用。

我想到了反射的那一套方法的参数,是一个数组。

于是我也制造了一个ArgumentsContainer。

它象是这样。

 

public sealed class ArgumentsContainer

{

    public List <object> Arguments { get ; }

    public ArgumentsContainer ( params object [ ] args ) { Arguments = new List <object> ( args ) ; }

}

 

它作为Use方法的参数。

对于如何得知这个参数,我觉得这需要另外的操作。

于是有一个Arguments的属性,返回一个CommandArgumentInfo的数组。

CommandArgumentInfo包含该有的参数的介绍和要求。

然后又想到Paradox家游戏的那种风格。

于是又搞了一个ArgumentDefineDomain。

我还没有想出更好的主意,暂时就这样吧。

 

希望你的更好的建议。

 

代码在Github:https://github.com/Infinicken/Richman4L

 
posted @ 2016-12-30 23:27  Wencey  阅读(219)  评论(0编辑  收藏  举报