Design patterns 命令模式-不知所措!太小就是太大,太大就是太大
您好 我正在写一个简短的脚本,但已经变得太拥挤了。东西要做很多事情Design patterns 命令模式-不知所措!太小就是太大,太大就是太大,design-patterns,data-structures,command,Design Patterns,Data Structures,Command,您好 我正在写一个简短的脚本,但已经变得太拥挤了。东西要做很多事情 class Stuff attr_accessor :config # stores configuration attr_accessor :dbh # stores database handle attr_accessor :logger # general logger to use def command_do_job_1 end def command_do_job_2 end
class Stuff
attr_accessor :config # stores configuration
attr_accessor :dbh # stores database handle
attr_accessor :logger # general logger to use
def command_do_job_1
end
def command_do_job_2
end
def command_do_job...n
end
我知道,这不是一个合适的命令模式
接下来的问题是,每个命令都需要
1. Configuration
1. Logger
1. Set of parameters
n. database handles
m. supporting methods/functions
好吧,现在我不高兴了,因为如果我把命令放到适当的对象中,那么我就创建了很多配置条目、参数、句柄,还有很多支持方法/函数,我想为不同的命令重复使用
这样做也很有趣:
class Stuff
attr_accessor :dbh, :logger, :config
end
class Command
attr_accessor :parent
def initialize(parent)
@parent = parent
end
def config
@parent.config
end
ad-nausiem for logger, dbh, other "joint" resources etc...
end
stuff = Stuff.new
cmd = Command.new stuff # so, I can carry the same logger, dbh, configs, etc..
因此,如果我将“命令”分解成适当的对象并正确地执行,我必须制作某种“框架/服务”来执行中的命令,并提供、logger、dbh、config等
诗句
如果我将命令放入方法(而不是命令模式),我可以重用所有现有资源(配置、记录器、数据库句柄等),但代价是将所有这些函数和方法混合在一个类中
什么样的代码结构能让我更好地使用“资源/方法/函数”,同时又能让我的代码保持简洁
这也不是什么大计划
-daniel您可以做的一个更改是将联合资源放入一个
ExecutionContext
类中,并且基命令可以包含一个容纳该对象的属性。然后,当应用程序构造命令
子类实例时,它可以用共享数据填充该上下文属性。您可以做的一个更改是将联合资源放入ExecutionContext
类中,基本命令
类可以包含容纳该对象的属性。然后,当应用程序构造命令
子类实例时,它可以用共享数据填充该上下文属性。我喜欢这样,ExecutionContext并不能解决所有问题,但确实解决了很多问题-danielI就像这样,ExecutionContext并不能解决所有的问题,但确实解决了很多问题-丹尼尔