英文:
Can we use any specific design pattern here?
问题
以下是翻译好的代码部分:
我目前的方法中有以下功能。
if (obj instanceof A) {
someString = ((ChildClass) ((A) obj)).get(0).getSomeString();
}
if (obj instanceof B) {
someString = ((B) obj)).getSomeString();
}
if (obj instanceof C) {
someString = ((c) obj)).getSomeString();
}
someString = performSomeOperation(someString);
if (obj instanceof A) {
((ChildClass) ((A) obj)).get(0).setSomeString(someString);
}
if (obj instanceof B) {
someString = ((B) obj)).setSomeString(someString);
}
if (obj instanceof C) {
someString = ((c) obj)).setSomeString(someString);
}
关于使用构建器模式的建议,但不确定是否可以在这里使用构建器模式,是否有其他方法?
英文:
I currently have some functionality like following in my method.
if(obj instanceof A) {
someString = ((ChildClass)((A)obj)).get(0).getSomeString();
}
if(obj instanceof B) {
someString = ((B)obj)).getSomeString();
}
if(obj instanceof C) {
someString = ((c)obj)).getSomeString();
}
someString = performSomeOperation(someString);
if(obj instanceof A) {
((ChildClass)((A)obj)).get(0).setSomeString(someString);
}
if(obj instanceof B) {
someString = ((B)obj)).setSomeString(someString);
}
if(obj instanceof C) {
someString = ((c)obj)).setSomeString(someString);
}
I am advised to use builder pattern, but I am not sure if we can use builder pattern here, is it possible? if not, is there any other approach?
答案1
得分: 0
使用一个 `interface` 或者可能是 `abstract class`。例如:
public interface IObj
{
public String getSomething();
}
<br>
public class AA implements IObj {
String name = "";
public AA(String s)
{
name = s;
}
@Override
public String getSomething()
{
return "AA:" + name;
}
}
<br>
public class BB implements IObj {
String name = "";
public BB(String s)
{
name = s;
}
@Override
public String getSomething()
{
return "BB:" + name;
}
}
<br>
public class ABTest {
public static void main(String[] args) {
IObj iobj = new AA("msg A");
System.out.println(iobj.getSomething());
iobj = new BB("msg B");
System.out.println(iobj.getSomething());
}
}
输出:
<br>
`AA:msg A`
<br>
`BB:msg B`
英文:
use an interface
or maybe abstract class
. Eg:
public interface IObj
{
public String getSomething();
}
<br>
public class AA implements IObj {
String name="";
public AA(String s)
{
name=s;
}
@Override
public String getSomething()
{
return "AA:"+name;
}
}
<br>
public class BB implements IObj {
String name="";
public BB(String s)
{
name=s;
}
@Override
public String getSomething()
{
return "BB:"+name;
}
}
<br>
public class ABTest {
public static void main(String[] args) {
IObj iobj = new AA("msg A");
System.out.println(iobj.getSomething());
iobj = new BB("msg B");
System.out.println(iobj.getSomething());
}
}
Output:
<br>
AA:msg A
<br>
BB:msg B
专注分享java语言的经验与见解,让所有开发者获益!
评论