Façade (фасад)class TreeNode { } class SearchResult { } static class ACAlgoritm { public static TreeNode BuildTree(string[] a_Keywords) { … } public static SearchResult[] FindAll(TreeNode a_Root, string a_Text) { … } } class SearchAlgoritm { TreeNode m_Root; public SearchAlgoritm(string[] a_Keywords) { m_Root = ACAlgoritm.BuildTree(a_Keywords); } public SearchResult[] FindAll(string a_Text) { return ACAlgoritm.FindAll(m_Root, a_Text); } public static SearchResult[] FindAll( string[] a_Keywords, string a_Text) { return ACAlgoritm.FindAll( ACAlgoritm.BuildTree(a_Keywords), a_Text); } }
5.
Façade (фасад)— Предоставить более удобный интерфейс для использования библиотеки, за счет наличия специальных удобных методов — Повысить читаемость клиентского кода (повышение уровня абстракции) — Снизить связанность между клиентским кодом и кодом модуля — Создать собственный хорошо спроектированный API для сторонней библиотеки, у которой свой API плохо спроектирован