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_Singleton_Chain Of Responsibility - Fatal编程技术网

Design patterns 单身人士及&引用;顺序执行“;设计模式

Design patterns 单身人士及&引用;顺序执行“;设计模式,design-patterns,singleton,chain-of-responsibility,Design Patterns,Singleton,Chain Of Responsibility,我正在使用下面的Singleton设计模式实现一个手机游戏库 Game.initialize("game_id") .downloadMap() .showMap() .setAutoAdjustMapResolution(true) 我对Singleton&Builder设计模式没有问题,但我的问题是 downloadMap() -> need to wait until initialize("game_id") // Network request showMap -> wa

我正在使用下面的Singleton设计模式实现一个手机游戏库

Game.initialize("game_id")
.downloadMap()
.showMap()
.setAutoAdjustMapResolution(true)
我对Singleton&Builder设计模式没有问题,但我的问题是

downloadMap() -> need to wait until initialize("game_id") // Network request
showMap -> waits until downloadMap() finishes// Network request
showMap -> depends on setAutoAdjustMapResolution(true)
我不知道在这种情况下我可以应用什么样的设计模式 我在考虑责任链,但不确定


请给我你的想法或建议。谢谢

您使用的是链接,但这与责任链模式完全不同

责任链的理念是只执行一项任务。链表(链)中有多个对象,每个对象都可以根据特定条件执行任务。用户在链的顶端发出execute()方法。如果条件不正确,第一个对象将不执行(),而是传递给链中的下一个对象,依此类推,直到其中一个对象成功执行()并返回。我不相信这是你需要的

如果您希望任务按照预定义的顺序执行到完成,可以使用链接(就像您所做的那样)或按顺序发出单独的命令

如果希望任务以复杂的顺序执行,并且许多顺序会根据以前命令的结果而发生变化,则可以使用状态模式。这很简单,功能也很强大,每个状态对象都能够执行一项任务,并根据自己任务的结果或其他来源的输入决定下一步执行哪项任务

如果希望所有任务同时启动,而不是等待其他任务完成,则需要使用异步编程。您没有说您使用的是哪种编程语言,但在Javascript中,例如,这可以通过承诺和其他构造(如同步等待来实现

异步编程在任何语言中都意味着在单独的线程或进程中执行多个任务。这可能是简单的,也可能是复杂的,这取决于编程的内容以及任务之间的分离程度。任务可能需要在某些点同步,或者如果使用共享资源(如数据库打印机)或更新共享资源(如文件或数据库记录),则可能需要使用锁和其他方式


我希望这会有所帮助,但如果您需要更多详细信息,请询问或提供有关我们具体情况的更多详细信息。

您使用的是链接,但这与责任链模式完全不同

责任链的理念是只执行一项任务。链表(链)中有多个对象,每个对象都可以根据特定条件执行任务。用户在链的顶端发出execute()方法。如果条件不正确,第一个对象将不执行(),而是传递给链中的下一个对象,依此类推,直到其中一个对象成功执行()并返回。我不相信这是你需要的

如果您希望任务按照预定义的顺序执行到完成,可以使用链接(就像您所做的那样)或按顺序发出单独的命令

如果希望任务以复杂的顺序执行,并且许多顺序会根据以前命令的结果而发生变化,则可以使用状态模式。这很简单,功能也很强大,每个状态对象都能够执行一项任务,并根据自己任务的结果或其他来源的输入决定下一步执行哪项任务

如果希望所有任务同时启动,而不是等待其他任务完成,则需要使用异步编程。您没有说您使用的是哪种编程语言,但在Javascript中,例如,这可以通过承诺和其他构造(如同步等待来实现

异步编程在任何语言中都意味着在单独的线程或进程中执行多个任务。这可能是简单的,也可能是复杂的,这取决于编程的内容以及任务之间的分离程度。任务可能需要在某些点同步,或者如果使用共享资源(如数据库打印机)或更新共享资源(如文件或数据库记录),则可能需要使用锁和其他方式


我希望这能有所帮助,但如果你需要更多细节,尽管问,或者提供更多关于我们具体情况的详细信息。

相关:谢谢你的链接,但它似乎与我的关注点不同相关:谢谢你的链接,但它似乎与我的关注点不同@en Xinh Lung Linh请阅读上面的内容,让我知道是否有用。@en Xinh Lung Linh请阅读上面的内容,并让我知道是否有用。