玉溪网站设计,做电商海报的网站,工作1年半胖40斤,银川网站设计联系电话立面是指建筑物的外观。 当穿过街道时#xff0c;我们所看到的只是建筑物的外观。 该图面抽象了建筑物的所有复杂实施细节。 同样#xff0c; 外观设计模式旨在为子系统中的一组接口提供统一的接口。 这个统一的接口对客户端隐藏了子系统的复杂性。 它属于结构模式类别。 J… 立面是指建筑物的外观。 当穿过街道时我们所看到的只是建筑物的外观。 该图面抽象了建筑物的所有复杂实施细节。 同样 外观设计模式旨在为子系统中的一组接口提供统一的接口。 这个统一的接口对客户端隐藏了子系统的复杂性。 它属于结构模式类别。 Java中的java.util.Connection是外观因为它允许我们创建数据库连接并隐藏实现细节。 同样 java.net。 URL类是另一个外观它公开了隐藏所有涉及细节的openStream方法。 外观模式通常是重构模式。 对于大型的复杂子系统使用外观模式并为客户端提供友好的界面进行交互是一个相当不错的主意。 实施外观模式 让我们首先定义一个接口– BookGenre public interface BookGenre { ListBook getBookList(); } 代表不同书籍类别的所有类都将实现此接口 public class Fiction implements BookGenre { ... } public class NonFiction implements BookGenre { ... } public class Technology implements BookGenre { ... } 我们可以让客户自己与所有子系统类进行交互以借用一本书。 但是为了简化起见让我们创建一个LibraryService作为外观它将公开以下功能 public enum BookType { FICTION, NONFICTION, TECHNOLOGY } public class LibraryService { private BookGenre fiction; private BookGenre nonFiction; private BookGenre technology; public LibraryService() { this .fiction new Fiction(); this .nonFiction new NonFiction(); this .technology new Technology(); } public void borrowBook(BookType type, String name) { ListBook books; switch (type) { case FICTION: books this .fiction.getBookList(); break ; case NONFICTION: books this .nonFiction.getBookList(); break ; default : books this .technology.getBookList(); } Book book BookService.findBookByName(books, name); book.setAvailability( false ); } ... } 为了使实现简单我们在此假设每个书名只有一本书。 请注意我们尚未添加任何其他功能。 方法借书使用现有的子系统API来执行此操作。 UML图 我们可以将上面的示例表示为 有了这个外观我们的客户就可以直接与其交互而不必自己处理系统内部细节。 值得注意的要点 让我们快速回顾一些要点 充当子系统的入口点并且不向子系统添加更多功能 隐藏在门面类后面的子系统的复杂性 简化了客户端的访问点 消除了客户端类自行管理子系统的需要 促进客户端和子系统之间的松散耦合 外观类绝不限制客户对子系统的直接访问 我们可以根据需要为复杂系统创建任意数量的外观。 这样做的目的是使客户端易于访问 努力维护额外的代码层并将其与我们的子系统进行的更改同步 结论 在本教程中我们探索了另一种称为外观模式的结构设计模式。 这是一种重构模式主要用于为复杂且设计不良的子系统提供更简单的外观。 翻译自: https://www.javacodegeeks.com/2019/08/facade-design-pattern-java.html