我们可以在这里使用任何特定的设计模式吗?

huangapple 未分类评论44阅读模式
英文:

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=&quot;&quot;;
public AA(String s)
{
	name=s;
}
@Override
public String getSomething()
{
	return &quot;AA:&quot;+name;
}
}

<br>

public class BB implements IObj {

String name=&quot;&quot;;
public BB(String s)
{
	name=s;
}
@Override
public String getSomething()
{
	return &quot;BB:&quot;+name;
}
}

<br>

public class ABTest {

public static void main(String[] args) {
	IObj iobj = new AA(&quot;msg A&quot;);
	System.out.println(iobj.getSomething());
	iobj = new BB(&quot;msg B&quot;);
	System.out.println(iobj.getSomething());
}
}

Output:
<br>
AA:msg A
<br>
BB:msg B

huangapple
  • 本文由 发表于 2020年4月9日 17:11:30
  • 转载请务必保留本文链接:https://java.coder-hub.com/61117679.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定