问题
是否有设计模式允许我创建类的上下文相关表示?
定义
Representation :可用的getter及其返回的值。
上下文:对象的请求上下文。
示例
网站发布待售房屋。
访客用户拥有House.getPrice()
,其中X号房屋返回100,000。
注册用户有House.getPrice()
,其中X号房屋返回95,000。
注册用户有House.getLandLordEmail()
,访客用户没有。
目的
这个Rest-service的实际用途,用于使用JAX-B自动映射到XML / JSON。
注意
我没有要求代码来实现这一点。我只是想知道是否有一个设计模式,以及它的名称。
答案 0 :(得分:4)
答案 1 :(得分:2)
为什么你不能拥有HouseFactory
或类似产生IHouse
实施的RegisteredUserHouse
。然后,您可以使用GuestUserHouse
和{{1}}等实现来封装您描述的逻辑。
然后根据用户是否注册选择要从工厂返回的实现。
答案 2 :(得分:0)
我认为你试着在这里解决两个不同的任务。
如果您需要根据用户是否注册而仅向用户显示有关房屋的部分信息,那么您应该在表示层(生成界面并应用安全约束)时执行此操作,而不是拖动此进入你的域层。
当您需要根据用户是否注册而应用某个价格或折扣策略时,这似乎是一个域层问题,应该使用策略模式解决。