在创建对象时,构造函数有很多参数是optional。稍后使用setter设置它们(例如:在惰性初始化期间)。

我的问题是,在某些情况下根本无法通过构造函数或setter设置参数。为了这个问题,我称这样的实例变量-dormant。假设有一个标准的pizze示例,其中Pizza(cheese, chicken, toppings).。客户可能不希望摘心,并可能留下dormant.

这被认为是不良做法吗?如果是,那么是否存在使用dormant实例变量清除此类的已知模式?

最佳答案

我认为Decorator Pattern是您所需要的:


  装饰器模式可用于静态(或在某些情况下在运行时)独立于同一类的其他实例,以静态方式扩展(装饰)某个对象的功能。


在此处查看.NET示例:

Please help me understand the "Decorator Pattern" with a real world example.

在这里您可以找到一个Java示例:

Gang of Four – Decorate with Decorator Design Pattern

08-05 08:48