2016-02-26 2 views
0

Я хочу создать фабрику, которая вернет объект, этот объект можно использовать для взаимодействия с системами кеша.Лучшая практика Создайте новый объект или верните тот же объект

Какой способ лучше? каждый раз возвращая новый объект или просто используя один и тот же объект каждый раз.

Factory getInstance(Type type){ 
    switch(type){ 
    case 1 : return A(); 
    case 2 : return B(); 

    } 
} 

или возвращать тот же объект

class Factory {  
    private static A a = new A();; 
    private static B b = new B(); 


Factory getInstance(Type type){ 
     switch(type){ 
     case 1 : a; 
     case 2 : b; 
     } 
    } 
} 

перенастройка объекты А или В есть номера статические методы, которые будут получать доступ к серверу Hazelcast, используя один статический экземпляр.

ответ

0

Если вы уверены, что оба A и B не несут состояние и действительно сохраняются в потоке, это может быть хорошая оптимизация для повторного использования одного и того же экземпляра. После хороший пример шаблона Factory является лучшим выбором:

http://www.tutorialspoint.com/design_pattern/factory_pattern.htm

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

http://www.java2s.com/Tutorial/Java/0460__Design-Pattern/SingletonFactory.htm

0

Общий принцип KISS.

Так,

  1. Не используйте одни и те же объекты, если это не действительно необходимо (например, ваша производительность действительно медленно, и вы сделали это решение на базе профилирующих результатов). Выполняя существующие объекты повторно, вам нужно управлять своими экземплярами самостоятельно (используя пулы объектов и т. Д.).
  2. Попробуйте создать объекты неизменяемыми, если у вас нет существенных причин. Выполняя изменяемые объекты, вы добавляете дополнительную сложность в свой код. Таким образом, вы увеличиваете вероятность добавления ошибок.

Вывод: Я предпочел бы использовать ваше первое решение без переменных Factory. По крайней мере, как первоначальная реализация Factory.

0

Не изобретайте велосипед, используйте библиотеку DI. Существует тонна библиотека для таких вещей, весна самая известная. Они могут создавать фабрику и управлять бобами для вас.

Это, вероятно, подавлено для такой необходимости, но я был бы удивлен, что у вас нет необходимости во всех ваших приложениях.

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