Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/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
Design patterns 是否有任何设计模式可以根据执行的上下文以不同的方式执行相同的方法_Design Patterns_Language Agnostic - Fatal编程技术网

Design patterns 是否有任何设计模式可以根据执行的上下文以不同的方式执行相同的方法

Design patterns 是否有任何设计模式可以根据执行的上下文以不同的方式执行相同的方法,design-patterns,language-agnostic,Design Patterns,Language Agnostic,我正在重构一些代码,我想要的是让该方法根据其执行的上下文执行额外的操作 例如: 如果当前方法如下所示 public void func1() { /// Operation Set 1 /// Operation Set 2 // Operation Set 3 // Operation Set 4 } 我希望它是这样的: // After refactoring punlic void func1() { /// Operation Set 1 if( context ==

我正在重构一些代码,我想要的是让该方法根据其执行的上下文执行额外的操作

例如: 如果当前方法如下所示

public void func1() {

 /// Operation Set 1

 /// Operation Set 2
 // Operation Set 3
 // Operation Set 4

}
我希望它是这样的:

// After refactoring
punlic void func1() {

/// Operation Set 1

if( context == FULL || context == EXEC_REQUIRED )
{
   /// Operation Set 2

    if( context === EXEC_REQUIRED )
    {
       // Operation Set 3
       // Operation Set 4
    }
}

}
因此,我只是想知道是否有任何设计模式已经

目前我可以考虑两种解决方案

  • 将上下文作为参数从调用方传递给方法,但如果遵循此操作,则必须更改调用堆栈中的所有函数,但这些函数可能不使用此上下文

  • 将ContextProvider之类的东西定义为静态类。无论何时我们需要上下文信息,都可以询问ContextProvider。这里的问题是,应用程序是多线程的,所以静态的想法似乎并不正确


  • 如果你有任何解决办法,那将是有益的

    这听起来对主观性很重要,这几年来一直是Smalltalk社区(主要)研究工作的主题。我最新知道的是在包中实现的(Daniel Langone…硕士论文,伯尔尼大学,2011年2月)。几年前,我还在Squeak中使用了Darders和Prieto模型

    主观性提供了一个框架,以确定可根据消息的发送者、接收者、甚至上下文或此类因素的任何组合来选择哪些主观行为,即使考虑到优先级或强制力


    尽管对于您的目的来说可能是压倒性的,但在纯文本技术(如主流语言)中实现此类方法可能会成为一项传奇性的任务,因为需要在真实对象环境中进行培训,并且大多数实现都提供了构建专用代码浏览器的工具和/或建议,这就是Smalltalk仍然闪耀的地方。

    这听起来很有主观性,几年来,主观性一直是Smalltalk社区(主要)研究工作的主题。我最新知道的是在包中实现的(Daniel Langone…硕士论文,伯尔尼大学,2011年2月)。几年前,我还在Squeak中使用了Darders和Prieto模型

    主观性提供了一个框架,以确定可根据消息的发送者、接收者、甚至上下文或此类因素的任何组合来选择哪些主观行为,即使考虑到优先级或强制力


    尽管对于您的目的来说可能是压倒性的,但在纯文本技术(如主流语言)中实现此类方法可能会成为一项传奇性的任务,因为需要在真实对象环境中进行培训,并且大多数实现都提供了构建专用代码浏览器的工具和/或建议,这就是Smalltalk仍然大放异彩的地方。

    根据,您所描述的可能不是最好的想法(从干净代码的角度来看)。我会尝试一种多态的方法(例如,the)。我同意。。。但在我的例子中,这是不可能的,因为一切都是在构造函数中发生的(更准确地说,是基到基构造函数)。我提到的问题只是简单的版本。因此,我唯一的选择是以某种方式为这个构造函数提供上下文,并使用ifelse逻辑。这个问题让我想到了。根据,您所描述的可能不是最好的想法(从干净代码的角度来看)。我会尝试一种多态的方法(例如,the)。我同意。。。但在我的例子中,这是不可能的,因为一切都是在构造函数中发生的(更准确地说,是基到基构造函数)。我提到的问题只是简单的版本。所以我唯一的选择就是以某种方式为这个构造函数提供上下文,并使用ifelse逻辑。