请教工厂方法的一个应用问题
譬如说我要生产一组产品,这组产品有一些共性,于是用一个
ProductMgr来管理共性的东西
当遇到专有的东西时
用一个工厂方法来处理
if( needSpecialProcess){
ProductCommand command1 = ProductFactory.getFactory(productId);
command1.createProduct();
}
这些没有问题。
但是,后来发现几种command里面又有一些共性的操作。这时该怎么设计呢?
现在有方案
1)沿用原来的结构,不改变。这样就是每种command都要做一些相同的操作。
2)将共性的操作抽取到一个公共方法,如 function.doBeforeCreate(ProductCommand command)。每个Command里再去调用这些方法。
3) 将共性的操作抽取到一个新类。
if( needSpecialProcess){
new CommonCommand().createProduct();
}
在CommandCommand里,先处理共性的操作。然后再调用工厂方法处理专有操作。
要考虑效率问题,又要兼顾结构。该怎么选呢?或者有更好的方案?