Привет,
Я пишу короткий простой сценарий, но он стал слишком переполненным. Материал должен делать довольно много вещей
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 и т. Д.
стихи
Если я помещу команды в методы (тогда это не шаблон команды), я получу возможность повторно использовать все свои существующие ресурсы (config, logger, handles базы данных и т. Д.), Но за счет всех этих функций и методов. быть смешанным в 1 классе.
Какая структура кода дала бы мне лучшее использование «ресурсов / методов / функций», но также позволила бы сделать мой код красивым и простым?
Это не такая уж большая программа ...
-daniel