![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| garbuz |
|
||||||||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 677 Регистрация: 22.1.2008 Репутация: 8 Всего: 11 |
Итак, есть некая структура классов, целиком и полностью подпадающая под паттерн Abstract Factory, если кто немного подзабыл или просто не знает, то тут можно ознакомиться http://ru.sun.com/pdf/patterns/pattern4.pdf
Во первых есть три интерфейса
Вот сама фабрика
Классы, расширяющие фабрику
И собственно 6 классов, имплементирующие эти три интерфейса.
Так вот, вопрос. Как лучше все это дело инициализировать в спринге? Имеется ввиду в xml-файле, где мы бины объявляем. Насчет последних 6 классов все понятно, а вот как быть с остальными, как их между собой связать? Что-то у меня не получается. Хотелось бы вот так получать бин
И от него уже плясать. Да, и еще хотел спросит, как правильно выбирать нужную нам фабрику, расширяющую абстрактную, мне кажется что через switch как-то некрасиво. Или может вообще лучше прописать подобное в конструкторе главной фабрики?
А в случае необходимости менять этот параметр... |
||||||||||||||
|
|||||||||||||||
| Dwyane |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 8.5.2007 Репутация: 1 Всего: 1 |
Рекомендую делать не так. Сделай базовый интерфейс. public interface IDOA<Template> {void add(T object);...}. Все остальные интерфейсы будут extends от этого с указанием реального класа доменного объекта.
|
|||
|
||||
| garbuz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 677 Регистрация: 22.1.2008 Репутация: 8 Всего: 11 |
Спасибо, думал об этом, потому что действительно все три интерфейса почти дублируют друг друга. Но главный вопрос темы не в этом |
|||
|
||||
| Dwyane |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 8.5.2007 Репутация: 1 Всего: 1 |
<bean id="userDao" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="proxyInterfaces"> <value>com.package.IUserDAO</value> </property> <property name="target"> <bean parent="abstDaoImpl"> <constructor-arg> <value>com.package.User</value> </constructor-arg> </bean> </property> </bean> |
|||
|
||||
| garbuz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 677 Регистрация: 22.1.2008 Репутация: 8 Всего: 11 |
Dwyane, уже больше похоже на правду, но все равно я не совсем все понял.
Вот как описываются мои 6 классов-реализаций
Как описать главную фабрику и наследуемые от нее? Причем у них все полей как таковых нет... или же их добавить надо... |
|||
|
||||
| Dwyane |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 8.5.2007 Репутация: 1 Всего: 1 |
<bean id="userDao" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="proxyInterfaces"> <value>com.package.IUserDAO</value> </property> <property name="target"> <bean parent="abstDaoImpl"> <constructor-arg> <value>com.package.User</value> </constructor-arg> </bean> </property> </bean> <bean id="abstDaoImpl" abstract="true" class="com.package.AbstrDaoImpl"> </bean> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="mappingResources"> <list> <value>./hibernate/user.hbm.xml</value> </list> </property> </bean> У вас вообще хибернейт уже синтегрирован с порталом и вы хотите узнать как можно лучше организовать систему? Или хибернейт не интегрирован? В этом случае прийдется еще попотеть. |
|||
|
||||
| garbuz |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 677 Регистрация: 22.1.2008 Репутация: 8 Всего: 11 |
немного переписал классы, которые наследуются от абстрактного
Вот что с xml
Вроде все работает, но что-то мне не нравится все равно. До сих пор не понятно, как лучше выбирать нужную фабрику, расширяющую абстрактную. С параметром что-то не получилось. Может не мудрить и делать сразу так?
Вот это обязательно должно быть? У меня вроде без этого работает. Ну то есть указываю эту информацию в другом месте, в hibernate-cfg.xml
|
||||||||
|
|||||||||
| Dwyane |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 8.5.2007 Репутация: 1 Всего: 1 |
Почитайте для чего необходима org.springframework.orm.hibernate3.LocalSessionFactoryBean. В вашем случае использование hibernateDAOFactory вообще не прозрачно. Не понятно ее назначение.
Покажите код StudentDAOHibernateImpl. Вы, для каждого отдельного метода открываете новую сесию ( о хибернейте )? |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |