基于不同输入实现多种策略的java设计模式
有一种设计模式可以应用于这种场景吗
我有实现BaseProcess类的Process类: BaseProcess有一个CreateProcess(BaseObject o)方法,BaseObject有两个或多个子对象
ProcessClassA : BaseProcess
ProcessClassB : BaseProcess
ObjectA : BaseObject
ObjectB : BaseObject
我希望能够有一个类进程,它可以有多个ProcessClass,比如本例中的2个类,但将来可以有更多的类,比如3个或更多的类,以及这个进程。我想这样使用这个类:
过程。处理(BaseObject o)并发送特定对象,如果我发送ObjectA,则让Process类调用特定类,如ProcessClassA。问题是我不想在进程内使用if,因为我需要在添加ProcessClassC时使用该类
例如:
ObjectA exampleObj = new ObjectA
Process p = new Process(List<BaseProcess>{ProcessClassA ,ProcessClassB }) //Something like this but dont need to be in the contructor or be a list could be //something else but that allows not to violate Open Close principle.
p.Process(exampleObj) => ProcessClassA.Process(exampleObj)
# 1 楼答案
如果您不想在Process Manager类中使用if子句,那么映射呢
像这样
流程方法和构造函数应该与流程管理器类中的类似
我假设您的ProcessClassA或B(BaseProcess)是无状态的。如果没有,并且如果您想为每个ObjectA的实例创建ProcessClassA,那么您需要像下面这样更改hashmap
HashMap<Class, Class>
这样就可以绑定ObjectA了。类来处理。班并在Process class构造函数中创建ProcessA类的实例此外,我相信会有更好的方法来命名这些类,尝试使用抽象类和泛型类型