Создание переменных классов - PullRequest
0 голосов
/ 20 апреля 2011

Может ли кто-нибудь сказать мне, есть ли способ, и если да, то как заставить действие реализовать целый класс, основанный на операторе if then или switch, по существу делая сам класс переменной?[Я хочу отобразить определенный класс списка (активность) на вкладке в зависимости от значения, полученного от события OnItemClicked на другой вкладке].

Чтобы дать вам представление о том, что, по моему мнению, я могу искать:

if(position == 1){//run class 1}

if(position == 2){//run class 2}

СПАСИБО.

Ответы [ 6 ]

2 голосов
/ 20 апреля 2011

Вы ищете полиморфизм ?

interface MyService {
   void doWork();
}

class CoolMyService {
   void doWork() { /* do something */ }
}

class AnotherMyService {
   void doWork() { /* do something else */ }
}

MyService service;
if(position == 1){ service = new CoolMyService(); }

if(position == 2){ service = new AnotherMyService() } 

service.doWork();

Я не знаю, сколько элементов в вашем списке, но вы можете адаптировать приведенный выше пример для динамической загрузки объектов, какподходящее.Просто помните, что вы можете использовать полиморфизм и определенный интерфейс для обеспечения целостности.Затем положите реальную работу в конкретных реализациях.

0 голосов
/ 20 апреля 2011

Абстрактные образцы фабрики или прототипа соответствуют вашим потребностям http://en.wikipedia.org/wiki/Prototype_pattern

0 голосов
/ 20 апреля 2011

Я не уверен, что понимаю вашу проблему.

Моим первым решением было бы реализовать шаблон фабрики с внедрением зависимости , передав класс в качестве аргумента методу фабрики:

код:

Class impClass;
if (position == 1) {
  impClass = First.class;
} else if (position == 1) {
  impClass = Second.class;
}
Object myObject = ObjectFactory.createObject(impClass);
0 голосов
/ 20 апреля 2011

Вы также можете изучить использование Class.forName ()

Class oClass = Class.forName(strClassName);
Tab myTab = (Tab) oClass.newInstance();
0 голосов
/ 20 апреля 2011

Вы можете использовать широковещательный приемник

if (position == 1){
    sent broadcast event to one class 
}if(position === 2){
    sent broadcast event to another class

}

0 голосов
/ 20 апреля 2011

Возможно, вы захотите (n абстрактный) фабричный шаблон.

Взгляните на внутри шаблонов Java Design

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