簡體   English   中英

了解JavaBeans模式(抽象getter和setter)

[英]Understanding JavaBeans pattern (Abstract getter and setter)

我現在正在開發Web應用程序,並且具有以下類層次結構:

public class AbstractCreator{

    public Object create(){
        getCreateService().crete();
    }

    public abstract CreateService getCreateService();

    public abstract void setCreateService(CreateService createService);

}

子孫:

public class SubCreator extends Creator{

    @Named("subCreateService") //I prefer using that annotation
                                    // instead of the legacy @Autowired
    private CreateService createService;

    @Override
    public CreateService getCreateService() {
        return createService;
    }

    @Override
    public void setCreateService(CreateService createService) {
        this.createService = createService;
    }
}

public class MegaSubCreator extends Creator{

    @Named("megaSubCreateService") 
    private CreateService createService;

    @Override
    public CreateService getCreateService() {
        return createService;
    }

    @Override
    public void setCreateService(CreateService createService) {
        this.createService = createService;
}

其中CreateService只是一個接口:

public interface CreateService{
    public Object create();
}

問題 :我需要在abstract class使用服務,但是有關服務的信息僅可從我們執行注入的具體子類中獲得。 在這種情況下使用抽象的getter / setter是否正確?

我的意思是,這與JavaBeans模式不矛盾嗎?

我並不真正在意JavaBeans模式-重命名方法即可。

就是說,我認為模型本身對我來說似乎不合適。 AbstractCreator需要CreatorService ,因此CreatorService應該是AbstractCreator一部分。 AbstractCreator可以具有一個將CreatorService作為參數的構造函數,並在子類中使用構造函數注入對其進行設置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM