我有10個原子服務,每個服務都有自己的實體。 (每個服務的分離項目)如何刪除服務之間的重複代碼
在每個服務內部,我有一個幫助程序,但它完全相同,但取決於它們的實體。
我想停止對每個服務重複的代碼,所以我創建了一個公用服務,將提供幫助他人,這纔是我的問題:
我該怎麼辦,如果我有之間的依賴關係幫助者和每個服務的實體?
這是從助手一個例子:
...
SomethingPK somethingPK = toSomethingPK(something);
SomethingEntity somethingEntity = (SomethingEntity)session.get(SomethingEntity.class, somethingPK);
somethingEntity = toSomethingEntity(something);
AnotherEntity another = new AnotherEntity();
//attribute sets
somethingEntity.setAnother(another);
...
每個服務都有自己的SomethingPK,SomethingEntity和AnotherEntity如Hibernate的映射實體。 我怎樣才能解除這種連接?
有意義嗎?
今天:重複的代碼一樣
ServiceABC項目
abc.entities.AbcType (DTO)
abc.entities.AbcEntity (Entity)
abc.entities.AbcPK (Entity's PK)
abc.entities.AbcAnotherEntity (Entity)
abc.helpers.CommonHelper (Bean)
abc.helpers.CommonHelpers.createSomethingThatIsNotBusinessLogic(Session session, AbcType abc) {
...
AbcPK key = parseToAbcPK(abc);
AbcEntity abcEntity = (AbcEntity)session.get(AbcEntity.class, key);
abcEntity = parseToAbcEntity(abc);
AbcAnotherEntity abcAnother = new AbcAnotherEntity();
AbcEntity.setAnother(another);
...
}
ServiceXYZ項目
xyz.entities.XyzType
xyz.entities.XyzEntity
xyz.entities.XyzPK
xyz.entities.XyzAnotherEntity
xyz.helpers.CommonHelper
xyz.helpers.CommonHelpers.createSomethingThatIsNotBusinessLogic(Session session, XyzType xyz) {
...
XyzPK key = parseToXyzPK(xyz);
XyzEntity xyzEntity = (XyzEntity)session.get(XyzEntity.class, key);
xyzEntity = parseToXyzEntity(xyz);
XyzAnotherEntity xyzAnother = new XyzAnotherEntity();
XyzEntity.setAnother(another);
...
}
需要重構來實現這一財產以後這樣的:
ServiceABC項目
abc.entities.AbcType (DTO)
abc.entities.AbcEntity (Entity)
abc.entities.AbcPK (Entity's PK)
abc.entities.AbcAnotherEntity (Entity)
ServiceXYZ項目
xyz.entities.XyzType
xyz.entities.XyzEntity
xyz.entities.XyzPK
xyz.entities.XyzAnotherEntity
ServiceUtilities項目
utilities.CommonHelper
utilities.helpers.CommonHelpers.createSomethingThatIsNotBusinessLogic(Session session, ?Type type) {
...
//same code prepared to deal with any entity, entityPK or type.
...
}
泛型不會在這裏有所幫助嗎?你可能想發佈一些代碼片段來幫助解答。 – benzonico 2013-03-06 22:35:48
有些代碼會有助於查看,但通常我認爲您需要將您的幫助器與實體分離以使其可重用。無論是通過泛型還是通用接口等。 – 2013-03-06 22:38:23
雖然我無法確定沒有一些代碼來準確顯示您在說什麼,但這聽起來像是依賴注入的工作! – Aurand 2013-03-06 22:48:39