-
Type: Improvement
-
Resolution: Fixed
-
Priority: Major
-
Affects Version/s: 1.0.39
-
Component/s: None
-
Labels:None
S2Daoのコミッタながら、コアユーザでもある立場からの提案です。
Dao/BeanMetaDataImplの拡張をしやすくするためのリファクタリングを
したいでのすが、よろしいでしょうか?
例えば、BeanMetaDataImpl.createRelationPropertyType()に関して、
中でBeanMetaDataImplをnewしていますが、これをFactoryMethodに
置き換えるなど。
createRelationPropertyType()をオーバーライドして、
そのままコピーしてちょっとだけ修正ということをやっているのですが、
「更新したプロパティのみをUPDATE文に含める」に関する修正で
このメソッドは修正されますので。。。
できれば今後のためにも「無理やりオーバーライド」を
させたくない(したくない)と思いました。
1. DaoMetaDataImpl.initialize()内の「new BeanMetaDataImpl()」を
FactoryMethodにする。
2. DaoMetaDataImpl.initialize()内の「new ResultSetHandlerFactoryImpl()」を
FactoryMethodにする。
3. BeanMetaDataImpl.createRelationPropertyType()内の
「new BeanMetaDataImpl()」をFactoryMethodにする。
4. BeanMetaDataImpl.createRelationPropertyType()内の
「beanMetaData.setXxx()」を呼び出している部分を
protectedの別Methodにする。
5. ResultSetHandlerFactoryImplをpublic(or protecgted?)クラスに
する。(現状PackageScopeのため全く触れない)
6. ResultSetHandlerFactoryImpl.createResultSetHandler()の
各ResultSetHandlerの生成をFactoryMethodにする。
など