2015-09-05 3 views
0

Я новичок в концепции адаптера Eclipse. Однако у меня есть некоторый опыт работы в Eclipse RCP.Замена адаптера адаптера Eclipse

Я искал в Интернете, чтобы получить представление об шаблоне адаптера Eclipse. У меня появилась идея, что он превращает один объект в другой объект. Особенно, что я понял, , если мы проверим как ссылку на объект (адаптер и адаптируемый), будет такой же (Мое понимание, Пожалуйста, исправьте меня, если я ошибаюсь). Я видел одну статью в Интернете, которая превращает Apple в Orange.

https://dzone.com/articles/eclipse-adapters-hand-hand-hol

Он не содержит полный исходный код. Поэтому я начал реализовываться по-своему. И я застрял в классе getAdapter(Object adaptableObject, Class<T> adapterType) класса AdaptorFactory. Я смущен, чтобы реализовать метод getAdapter (адаптируемый, адаптер).

ответ

1

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

Часто исходный объект является объектом пользовательского интерфейса - возможно, узлом древовидной структуры, а запрос типа является чем-то вроде файла, представленного узлом.

public class TreeNodeFactory implements IAdapterFactory { 

    private static final Class<?>[] adapterList = { IFile.class }; 

    @Override 
    public <T> T getAdapter(Object sourceObject, Class<T> adapterType) { 
     if (adapterType == IFile.class) { 
      if (sourceObject instanceof TreeNode) { 
       return (T) ((TreeNode)sourceObject).getFile(); 
      } 
     } 
     return null; 
    } 

    @Override 
    public Class<?>[] getAdapterList() { 
     return adapterList; 
    } 
} 

Обратите внимание, что здесь я называю TreeNode.getFile метод, который будет возвращать IFile, который представляет узел.

Использование getAdapter означает, что код вызова не должен знать ничего о TreeNode, он может просто запросить у IFile.

+0

Привет Большое спасибо за информацию. Тем не менее, я не очень понятен в методе getAdapter (адаптируемый, адаптивный) класса AdaptorFactory , если бы захотел получить существующий (оранжевый) объект, каким образом мне нужно писать? Не могли бы вы дать мне подсказку? Следующим образом я ожидаю. Apple apple = новый Apple(); Оранжевый оранжевый = (оранжевый) apple.getAdapter (Orange.class); – user414967

+0

Да, это правильно. –

+0

Является ли текущий метод getAdapter (адаптируемый, адаптивный) адаптером класса AdaptorFactory? потому что он всегда создает новый объект. Как переписать код, который может повторно использоваться для переноса оранжевого объекта? было бы очень полезно, если бы вы могли это сказать. – user414967

Смежные вопросы