Можем ли мы использовать здесь какой-либо конкретный шаблон проектирования c - PullRequest
0 голосов
/ 09 апреля 2020

У меня в настоящее время есть некоторые функциональные возможности, такие как следующие в моем методе.

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);
        }

Мне рекомендуется использовать шаблон компоновщика, но я не уверен, можно ли использовать здесь шаблон компоновщика, возможно ли это? если нет, есть ли другой подход?

1 Ответ

0 голосов
/ 09 апреля 2020

используйте interface или, возможно, abstract class. Например:

public interface IObj 
{
    public String getSomething();
}


public class AA implements IObj {

String name="";
public AA(String s)
{
    name=s;
}
@Override
public String getSomething()
{
    return "AA:"+name;
}
}


public class BB implements IObj {

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


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());
}
}

Выход:
AA:msg A
BB:msg B

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...