我正在寻找在以下情况下使用的正确设计模式:
我有一个正在运行的进程,在此过程中,我需要将几个属性附加到系统中的一个对象。该对象属于同一类型,但在运行时它可能表现出略微不同的行为,因此设置属性的方式可能因类型而异。
无论这些对象的类型和行为如何,我都想在每个对象上设置相同的属性。
然后我需要一个对象来在流程的另一点解析这些属性
解决这个问题的最佳方法是什么?
我正在寻找在以下情况下使用的正确设计模式:
我有一个正在运行的进程,在此过程中,我需要将几个属性附加到系统中的一个对象。该对象属于同一类型,但在运行时它可能表现出略微不同的行为,因此设置属性的方式可能因类型而异。
无论这些对象的类型和行为如何,我都想在每个对象上设置相同的属性。
然后我需要一个对象来在流程的另一点解析这些属性
解决这个问题的最佳方法是什么?
我建议您在编码之前不要尝试选择设计模式。首先,编写代码。然后,开始抽象任何冗余代码或变化的代码。要了解不同的抽象代码,请阅读Head First Design Patterns。那本书的开头是一个使用策略模式抽象变化的例子。SimUDuck 示例是我见过的关于策略模式的最佳解释示例之一。听起来这就是你要问的。但是,您的问题没有具体示例说明您要做什么,因此在这里很难举出具体示例。
话虽如此,听起来您在这里需要良好的老式多态性:您需要以相同的方式对待所有对象,并设置相同的属性,只是具有不同的值。为此,请创建一个接口并让所有不同的类型实现该接口。然后,在调用/消费代码中,将每个具体类型作为接口处理。
如果您尝试首先选择一种设计模式,很多时候您最终会发现事情会根据实现的细节发生变化,而您最初对设计模式的猜测最终会变得不合适。然后你最终编码以满足设计模式而不是解决真正的问题。先写代码,即使它很丑。让它工作。然后找到抽象的领域,它自然会自行演变成一种设计模式。
如果我正确理解,您想在运行时添加行为???如果是,那么我认为 - 装饰器(又名包装器)设计模式可能很好。