Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oop 设计模式-用于公共数据访问的对象_Oop_Design Patterns - Fatal编程技术网

Oop 设计模式-用于公共数据访问的对象

Oop 设计模式-用于公共数据访问的对象,oop,design-patterns,Oop,Design Patterns,我正在寻找在以下情况下使用的正确设计模式: 我有一个正在运行的进程,在这个进程中,我需要将几个属性附加到系统中的一个对象。对象的类型相同,但在运行时可能表现出稍有不同的行为,因此属性的设置方式可能会因类型而异 无论这些对象的类型和行为如何,我都希望在每个对象上设置相同的属性 然后,我需要一个对象在流程的另一个点解析这些属性 最好的方法是什么?如果我理解正确,您希望在运行时添加行为??? 如果是,那么我认为-decorator(aka wrapper)设计模式可能很好。如果我理解正确,您想在运行时

我正在寻找在以下情况下使用的正确设计模式:

我有一个正在运行的进程,在这个进程中,我需要将几个属性附加到系统中的一个对象。对象的类型相同,但在运行时可能表现出稍有不同的行为,因此属性的设置方式可能会因类型而异

无论这些对象的类型和行为如何,我都希望在每个对象上设置相同的属性

然后,我需要一个对象在流程的另一个点解析这些属性


最好的方法是什么?

如果我理解正确,您希望在运行时添加行为???
如果是,那么我认为-decorator(aka wrapper)设计模式可能很好。

如果我理解正确,您想在运行时添加行为吗???
如果是的话,那么我认为-decorator(aka wrapper)设计模式是不错的。

我建议您在编码之前不要尝试选择设计模式。首先,编写代码。然后,开始抽象任何冗余代码或变化的代码。要理解不同的抽象代码,请阅读。在这本书的开头是一个使用策略模式抽象出变化的例子。SimUDuck的例子是我见过的关于战略模式的最好解释的例子之一。听起来这就是你要问的。然而,你的问题没有一个具体的例子来说明你想做什么,所以在这里给出一个具体的例子是很困难的

话虽如此,听起来您需要好的、老式的多态性:您需要以相同的方式对待所有对象,设置相同的属性,只是使用不同的值。为此,创建一个接口,并让所有不同的类型实现该接口。然后,在调用/使用代码中,将每个具体类型作为接口处理


如果您首先尝试选择一个设计模式,很多时候您会发现事情会根据实现的细节而发生变化,并且您最初对设计模式的猜测最终是错误的。然后,您最终编码以满足设计模式,而不是解决真正的问题。先写代码,即使很难看。让它工作起来。然后找到需要抽象的区域,它自然会自行演化为设计模式。

我建议您在编码之前不要尝试选择设计模式。首先,编写代码。然后,开始抽象任何冗余代码或变化的代码。要理解不同的抽象代码,请阅读。在这本书的开头是一个使用策略模式抽象出变化的例子。SimUDuck的例子是我见过的关于战略模式的最好解释的例子之一。听起来这就是你要问的。然而,你的问题没有一个具体的例子来说明你想做什么,所以在这里给出一个具体的例子是很困难的

话虽如此,听起来您需要好的、老式的多态性:您需要以相同的方式对待所有对象,设置相同的属性,只是使用不同的值。为此,创建一个接口,并让所有不同的类型实现该接口。然后,在调用/使用代码中,将每个具体类型作为接口处理

如果您首先尝试选择一个设计模式,很多时候您会发现事情会根据实现的细节而发生变化,并且您最初对设计模式的猜测最终是错误的。然后,您最终编码以满足设计模式,而不是解决真正的问题。先写代码,即使很难看。让它工作起来。然后找到需要抽象的区域,它自然会自行演变成一种设计模式