Режим внешнего вида: также известный как режим фасада: фасад внешнего вида обеспечивает постоянный интерфейс для набора интерфейсов подсистемы, что делает этот набор подсистем простыми в использовании (уменьшает сложность исходной системы, введя новую роль внешнего вида, одновременно уменьшая связь между классом клиента и подсистемой).
Источник изображения: шаблон проектирования: основа многоразового объектно-ориентированного программного обеспечения.
выполнить
Требования к случаю: аренда дома
Студенты, которые пережили поиск дома и арендовали дом, могут понять, что поиск дома - это очень болезненная вещь. Они должны не только бежать от сообщества к сообществу, но и должны торговаться с арендодателем (вторым). Поэтому они научились быть умными и больше не разговаривать друг с другом, но они напрямую находят такого агента по недвижимости, как Лианджия, и я люблю свою семью. У них определенное количество жилья в руках. Нам нужно только оплатить им комиссию, чтобы они могли торговаться с арендодателем от нашего имени. Большинство из них очень профессиональны, экономят время и деньги. В настоящее время агент по недвижимости является фасадом, а арендатор дома - подсистема подсистемы:
Фасад
Класс внешнего вида: Знайте, какие подсистемы несут ответственность за обработку запросов, и прокси Запрос клиента к соответствующему объекту подсистемы:
Public Class Mediumfacade {Private Cuiyuanapartment Cuiyuan; Частный xixiapartment xixi; Частный Xihuapartment Xihu; public mediumfacade () {cuiyuan = new Cuiyuanapartment ("Cuiyuan Community", 900, 1); xixi = new xixiapartment ("xixi Garden", 1200, 1); xihu = new Xihuapartment ("Community Xihu", 2600, 1); } public void renthouse (двойная цена) {// Цена является подходящей, и есть дом для формирования if (price> = cuiyuan.getprice () && cuiyuan.getStatus ()! = 0) {System.out.println ("подписка" + cuiyuan.getlocation ()); cuiyuan.setstatus (0); } else if (price> = xixi.getPrice () && xixi.getStatus ()! = 0) {System.out.println ("Подписаться" + xixi.getLocation ()); xixi.setstatus (0); } else if (price> = xihu.getPrice () && xihu.getStatus ()! = 0) {System.out.println ("Резервирование" + xihu.getLocation ()); xihu.setstatus (0); } else {System.out.println ("Слишком низкий/без листинга ..."); }}} Подсистема
Коллекция подсистемы: реализовать функции подсистемы и задачи обработки, назначенные объектами фасада (обратите внимание, что в подсистеме нет информации о фасаде, то есть нет ссылки на объект фасада):
/** * @author jifang * @since 16/8/23 10:12. */public class xihuapartment {private String location; частная двойная цена; частный статус Int; public xihuapartment (расположение строки, двойная цена, int status) {this.location = location; this.price = цена; this.status = status; } public String getLocation () {return Location; } public Double GetPrice () {return Price; } public int getStatus () {return Status; } public void setStatus (int status) {this.status = status; }} класс xixiapartment {private String location; частная двойная цена; частный статус Int; public xixiapartment (строка местоположение, двойная цена, int status) {this.location = location; this.price = цена; this.status = status; } public String getLocation () {return Location; } public Double GetPrice () {return Price; } public int getStatus () {return Status; } public void setStatus (int status) {this.status = status; }} class cuiyuanapartment {private String location; частная двойная цена; частный статус Int; public cuiyuanapartment (местоположение строки, двойная цена, int status) {this.location = location; this.price = цена; this.status = status; } public String getLocation () {return Location; } public Double GetPrice () {return Price; } public int getStatus () {return Status; } public void setStatus (int status) {this.status = status; }} Клиент
Таким образом, клиент просто связывается с агентом по недвижимости и дает нам цитату, и они помогут нам связаться со всеми арендодателями, которые встречаются:
Public Class Client {@test public void client () {Mediumfacade facade = new Mediumfacade (); FACADE.Rentinghouse (800); }}краткое содержание
Студенты, которые имеют опыт в объектно-ориентированном развитии, могли использовать его, даже если бы они никогда не слышали о моделях внешности, потому что он прекрасно воплощает идею принципа инверсии зависимости и закона Димита, который является одним из наиболее часто используемых моделей.
использовать
Прежде всего, на ранней стадии дизайна вы должны сознательно отделять иерархические уровни, такие как классическая трехслойная архитектура, создавая фасад между слоями, который может обеспечить простой интерфейс для сложных подсистем и значительно уменьшить степень связи.
Во -вторых, на стадии развития подсистемы часто становятся все более и более сложными из -за непрерывной реконструкции. Добавление фасада может обеспечить простой интерфейс и уменьшить зависимости между модулями.
В -третьих, при поддержании устаревшей системы система может быть очень трудно поддерживать и расширять, но поскольку она содержит очень важные функции, на нее должны полагаться новые требования. В настоящее время для новой системы может быть разработан фасад, обеспечивающий относительно четкий и простой интерфейс для разработки грубого или высокого унаследованного кода, позволяя новой системе взаимодействовать с фасадом, а фасад взаимодействует с устаревшим кодом для всей сложной работы.
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.