我有一个项目正在进行,我想要一个类的唯一实例。
我有一个“JobOffer”类,它具有“OfferStatus”类型的属性(它是抽象的并实现了状态模式)。我有 'StateAvailable' 和 'StateUnavailable' (如果你愿意,也有 'open' 和 'close')。“JobOffer”对象必须存储在数据库中。
我只想有一个“StateAvailable”和一个“StateUnavailable”,所以当我创建一个新的 JobOffer 时,我会引用“StateAvailable”或“StateUnavailable”,然后我可以列出所有打开(可用)的 jobOffer 和所有已关闭(不可用)。
我知道我可以通过在种子方法中添加数据库中的状态来做到这一点,并且永远不会实例化新状态。但我想知道是否有可能做一个单例或一些事情来避免某人(我的意思是控制器、模型或任何东西)可以创建该类的新实例。
public class JobOffer {
public int JobOfferId {get;set;}
public OfferState State {get;set;
public virtual ICollection<Person> People {get;set;}
//And some methods here, which depends on the state
//ie, this.State.myMethod();