Шаблон разработки: разработчик

Нет необходимости делать:

MY_VAR=$(cat content.txt)

Сначала прочитать содержимое файла в переменную, а затем заменить текст во втором файле содержимым этой переменной.

Вы можете использовать это sed, чтобы сделать это за один шаг:

sed '/@@MY_VALUE@@/{s///;
r content.txt
}' my_file.txt

некоторое содержимое с отступами ...

some indented content ...

      hostAliases:
      - ip: "?.?.?.?"
        hostnames:
        - "m-0.mongodb-service.default.svc.cluster.local"
      - ip: "?.?.?.?"
        hostnames:
        - "m-1.mongodb-service.default.svc.cluster.local"
      - ip: "?.?.?.?"
        hostnames:
        - "m-2.mongodb-service.default.svc.cluster.local"
      - ip: "?.?.?.?"
        hostnames:
        - "m-3.mongodb-service.default.svc.cluster.local"
some indented content ...

Обновление: [ 1118]

Вы можете использовать это awk для замены шаблона многострочной переменной:

awk -v var="$var" '/@@MY_VALUE@@/{[113] = var} 1' my_file.txt

Для сохранения изменений в строке используйте эту опцию, если используете gnu awl:

[ 114]

Если не используется gnu awk, тогда используйте:

awk -v var="$var" '/@@MY_VALUE@@/{[115] = var} 1' my_file.txt >> $.tmp &&
mv $.tmp my_file.txt
24
задан Brian Rasmussen 30 March 2009 в 05:20
поделиться

4 ответа

Я иду, относятся к примеру C# в Статье Википедии здесь.

Первой проблемой является большинство примеров, трудно кодируют значения свойств в к конкретным частям, которые я действительно думаю, должен прибыть из базы данных. Я думал, что идея состояла в том, чтобы отправить мой выбор директору (от источника данных) и сделать, чтобы разработчик создал специализированный продукт на основе моих данных.

В этом случае у Вас была бы реализация класса PizzaBuilder, который знает, как получить данные из базы данных. Можно сделать это несколько путей.

Можно было бы быть, делают HawaiianPizzaBuilder. Когда класс инициализирует, он запрашивает базу данных для гавайской Пиццы и получает строку. Затем, когда различная Сборка (x) методы называют, она установила бы свойства на соответствующее поле полученной строки базы данных.

Другой был бы, просто делает PizzaDatabaseBuilder, и удостоверьтесь, что при инициализации класса, Вы передаете его идентификатор строки, в которой Вы нуждаетесь для того типа пиццы. Например, вместо

waiter.PizzaBuilder = new HawaiianPizzaBuilder();

Вы используете

waiter.PizzaBuilder = new PizzaDatabaseBuilder("Hawaiian");

Вторая проблема, я хочу, чтобы методы разработчика на самом деле создали части, затем присваивают их продукту, не передают строки, но реальные части продукта со строгим контролем типов.

Не должна быть проблема. То, в чем Вы нуждаетесь, является другим шаблоном типа Фабрики/Разработчика для инициализации полей Пиццы. Например,

вместо

 public override void BuildDough()   { pizza.Dough   = "pan baked"; }

Вы сделали бы что-то как

 public override void BuildDough()   { pizza.Dough   = new DoughBuilder("pan baked"); }

или

 public override void BuildDough()   { pizza.Dough   = new PanBakedDoughBuilder(); }

DoughBuilder может перейти к другой таблице в Вашей базе данных для надлежащего заполнения Класса PizzaDough.

11
ответ дан 28 November 2019 в 23:21
поделиться

Главным образом вызов BuilderPattern похож на это:

Car car = new CarBuilder().withDoors(4).withColor("red").withABS(true).build();
22
ответ дан 28 November 2019 в 23:21
поделиться

Я никогда не думал об этом, этим путем, но LINQ (шаблон, не синтаксис) является на самом деле разработчик, правильно?

Это - быстрый интерфейс, который создает запрос и может создать запросы в различных представлениях (SQL, объектные запросы в оперативной памяти, запросы веб-сервиса, Bart, которого Де-Смет даже записал реализации Linq-Excel).

14
ответ дан 28 November 2019 в 23:21
поделиться

Я сказал бы, что Вы не можете избежать ни одного из них - имеющий немного перегрузок для Ваших частей и имеющий оператор случая/если где-нибудь вниз стек. Также необходимость изменить Ваш код при добавлении нового класса могла бы быть единственной опцией.

Это сказанное можно получить справку с некоторыми другими скороговорками - а именно, Фабрика, которая могла помочь Вам в процессе здания. Также разумное использование полиморфизма (например, все части наследовались некоторому типу быть этим класс или интерфейс) может уменьшить количество IFS/случаев и перегрузок.

Надеюсь, это поможет.

0
ответ дан 28 November 2019 в 23:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: