在JAVA中使用什么样的设计模式?

时间:2016-08-23 07:02:53

标签: design-patterns

我有一组输入,并且有不同的方法接受这些输入并在一次类中执行不同的任务。我应该在这里使用工厂模式,因为方法签名是相同的,并创建不同的类,其中实现不同?案件数量相当大,工厂模式好主意?

例如,我有一个文件类型的开关,有近20种类型的文件类型,所以20个开关案例。看看以下两个例子的例子,我有20多个案例

switch( fileType ) {
                case SIMPLE_FILE:
                    processSIMPLEData( stepInput, stepOutput,ackFilePath, errorFilePath );
                break;
                case MUL_FILE:
                   processMULData( stepInput, stepOutput,ackFilePath, errorFilePath );
                break;

...

2 个答案:

答案 0 :(得分:0)

是使用工厂模式。从文件类型文件类型处理程序 Map 之上是有意义的。看到许多参数,这是一个"代码气味"因为必须在某种程度上处理它们,所以最好在参数类或构建器模式中卸载它(当参数化不存在的特征时可以发出警报)。

答案 1 :(得分:0)

我不确定您要解决的问题是什么。设计模式表明了动机和适用性,而你的问题并没有回答这个问题,因为它缺乏背景。你想解决什么问题?

从上面的代码中,您似乎拥有一个取决于文件类型的处理功能。一个简单的选择是为文件类型建立一个类层次结构,并添加一个为不同文件类型重写的方法过程。对于创建,您需要在文件类型和类之间进行映射。这可能是一个工厂,但工厂解决了另一个问题,即用户可以在不知道具体类型的情况下创建对象。因此,您不是编写.spinner { -webkit-animation:spin 0.5s linear 1; -moz-animation:spin 0.5s linear 1; animation:spin 0.5s linear 1; } @keyframes spin { 0% { transform: rotate(0); } 100% { transform: rotate(180deg); } } -webkit-keyframes spin { 0% { transform: rotate(0); } 100% { transform: rotate(180deg); } } ,而是从工厂查询新实例,并获取您不了解和关心的某种类型的对象。

如果你有一个文件类型的层次结构,并希望能够通过对文件的操作来扩展它,你应该查看访问者。