我仍然试图将设计模式包围起来,并且第二次我遇到了似乎迫切需要解决模式解决方案的问题。
我有一个包含多种帐户类型的帐户系统。我们有餐厅,酒店,service_provider和消费者帐户类型。我相信将来会有更多的商业帐户类型,当然还有一个全球管理员帐户。
所以我想知道如何实现帐户类型的切换。例如。每个帐户都有一个或多个配置文件,但配置文件将根据帐户类型而有所不同。我应该在这里用什么类关系来处理多种类型的帐户 - 多态或继承?
似乎应该有一个抽象的基础Profile类,其他配置文件应该扩展,但我不确定如何实现(例如,配置文件类型和帐户类型之间的连接表?)。
这也是一个实施工厂模式的机会,我只是不确定如何去做。
有什么想法吗?
*
*
编辑提供了一些建议的示例:
Account -> hasMany -> Users
Account -> belongsTo -> AccountType
Account -> hasOne -> Profile
个人资料根据帐户的类型而有所不同,例如,餐馆类型的帐户将有菜单,酒单等,类型酒店的帐户将有房型,便利设施,类型消费者的帐户将有个人品味,祖国等。
问题是什么设计模式最能实现这些关系。
希望更清楚,谢谢!
答案 0 :(得分:1)
我建议聚合而不是继承这里的帐户和配置文件之间的关系,但有一个帐户基类继承到多个帐户类型。
该帐户包含一个配置文件对象,可以在每个多态帐户类型的构造函数中设置。
您也可以在工厂或虚拟构造函数模式中包装帐户。
答案 1 :(得分:0)
感谢这些例子;你可能试图让它变得更难。以下是否有效?
User <<--> Account
Account <<--> AccountType
Account <--> Profile
Profile <<--> ProfileType
我质疑帐户资料1:1的关系,似乎帐户最终可能会有多个个人资料,或者个人资料可能属于用户而不是帐户,但我真的不知道在这种情况下,个人资料是什么/做什么