Обеспечить легкий вход для вашего клиента.
_00 / Концепция
Цель состоит в том, чтобы предоставить конечным пользователям простой интерфейс. Как вашим пользователям, им не нужно знать, насколько сложной будет логика. Опять же, вы можете взять SDK в качестве примера. SDK должен быть под рукой, даже если пользователи не знают базового кода.
_01 / Ключевые роли
В следующем примере кода браузер будет инкапсулировать подробную логику работы в Интернете. Пользователь может сосредоточиться на том, что он хочет, а не на логике браузера.
// encapsulate the logic class Browser { ... constructor(DNS, TCP, HTTP, DOM) { this.DNS = DNS this.TCP = TCP this.HTTP = HTTP this.DOM = DOM } go(url) { this.DNS.search(url) this.TCP.connect() this.HTTP.connect() this.DOM.render() } } // client const browser = new Browser(...) browser.go("https://www.google.com/")
_02 / Компромиссы
🟢 Простота в использовании для клиента, довольно дружественный.
🟢 Изолируйте свою подсистему.
🔴 Добавив больше вещей, вы создадите богоподобный класс.
🔴 У вас будет несколько причин для модификации твой бог как класс.