Каков подходящий шаблон дизайна для многократной замены определенного текста или символов - PullRequest
0 голосов
/ 29 октября 2019

У меня есть требование заменить числовые теги, HTML-теги и специальные символы. Я создал метод для каждой цели. Например, я создал методы для ReplaceSpecialCharacters, ReplaceHTMLTags и ReplaceNumeric. И обратите внимание, что есть несколько дополнительных методов замены. Мой вопрос: какой шаблон проектирования подходит для этого? Я подумываю использовать для этого шаблон «Стратегия» или «Фабрика», применим ли шаблон «Декоратор» для этих требований?

sample code
var text="12233333333<body>CLEANTEXT!@#$%^&*()</body>"
var cleanText= ReplaceHTMLTags(text)
    cleanText= ReplaceNumeric(cleaText)
    cleanText= ReplaceSpecialCharacters(cleaText)

Ответы [ 2 ]

2 голосов
/ 29 октября 2019

Это похоже на хорошее использование шаблона стратегии. Это поможет вам выбрать алгоритм во время выполнения, такой как HtmlReplacementBehaviour, NumericReplacementBehaviour.

https://en.wikipedia.org/wiki/Strategy_pattern

https://www.dofactory.com/net/strategy-design-pattern

В качестве альтернативы это также можно сделать, используя Builder, YouМожно настроить конструктор, например

var replacementPlan = new ReplacementBuilder(ReplaceHTMLTags ).Add(ReplaceSpecialCharacters).Add(ReplaceNumeric);

Позже вы выполняете метод replace, который итеративно вызывает различную логику замены.

1 голос
/ 29 октября 2019

Я предлагаю создать метод расширения строки для каждой из ваших замен.

public static class MyStringExtension
{
    public static string ReplaceHTMLTags(this string text)
    {
        return Regex.Replace(text, "<.*?>", String.Empty);
    }
}

это позволит вам связать их вместе, как

text.ReplaceHTMLTags().ReplaceNumeric().ReplaceSpecialCharacters()
...