2012-12-19 108 views
1

像下面两个类一样,除了调用不同版本的参数外,它们几乎看起来相同,那么如何重构它们呢?如何用不同版本的参数重构同一类

import com.v1.B; 
import com.v1.C; 
class A1 
{ 
    public A1(B,C) 
    public dosomething1() 
    { 
    //do something with B and C 
    } 
    public dosomething2() 
    { 
    //do something 
    } 
} 

A2类:

import com.v2.B; 
import com.v2.C; 
class A2 
{ 
    public A2(B,C) 
    public dosomething1() 
    { 
    //do something with B and C 
    } 
    public dosomething2() 
    { 
    //do something 
    } 
} 
+1

你是什么意思“调用不同版本的特性参数的”? – Hilikus

+0

我的意思是使用不同版本的参数,如B和C上面 –

+0

如果唯一的区别是参数,那么你不需要两个类。在你的例子中,两个类的主体是相同的 – Hilikus

回答

1

应首先创建一个基类或接口,用于这两种类型的例如com.v.BaseBcom.v1.Bcom.v2.B方便多态,然后你可以使用一个通用类,而不喜欢任何重复:

import com.v.B; 
import com.v.C; 
class A 
{ 
    public A(B,C) 
    public dosomething1() 
    { 
    //do something with B and C 
    } 
    public dosomething2() 
    { 
    //do something 
    } 
} 
相关问题