网站建设绵阳辉煌电商,现在网站开发用什么,太仓家政保洁公司,金华自助建站设计模式类型
结构型设计模式
使用场景
将对象组合成树状结构来表现部分-整体的层次结构。这种模式能够使得客户端对单个对象和组合对象的使用具有一致性。这句话太抽象了#xff0c;拿一个实际的网站菜单树例子来说。
例子#xff1a;网页菜单树
一个网站的…设计模式类型
结构型设计模式
使用场景
将对象组合成树状结构来表现部分-整体的层次结构。这种模式能够使得客户端对单个对象和组合对象的使用具有一致性。这句话太抽象了拿一个实际的网站菜单树例子来说。
例子网页菜单树
一个网站的导航菜单。这个导航菜单包含一级菜单和二级菜单二级菜单可以是链接或者进一步的子菜单。让我们来用组合模式来设计这个网页菜单树。 首先我们需要一个共同的抽象类或接口来表示菜单项让我们称之为 MenuItem
public interface MenuItem {void display();
}
然后我们创建菜单项类它们都实现了 MenuItem 接口。对于一级菜单和二级菜单我们创建不同的实现类
import java.util.ArrayList;
import java.util.List;public class Menu implements MenuItem {private String name;private ListMenuItem items;public Menu(String name) {this.name name;this.items new ArrayList();}public void addMenuItem(MenuItem item) {items.add(item);}public void removeMenuItem(MenuItem item) {items.remove(item);}public void display() {System.out.println(Menu: name);for (MenuItem item : items) {item.display();}}
}public class MenuItemLink implements MenuItem {private String name;private String url;public MenuItemLink(String name, String url) {this.name name;this.url url;}public void display() {System.out.println(Link: name , URL: url);}
}
现在我们可以创建网页菜单树并使用组合模式将菜单项组织起来
public class Main {public static void main(String[] args) {MenuItemLink homeLink new MenuItemLink(Home, /home);MenuItemLink aboutLink new MenuItemLink(About, /about);Menu mainMenu new Menu(Main);mainMenu.addMenuItem(homeLink);mainMenu.addMenuItem(aboutLink);MenuItemLink productsLink new MenuItemLink(Products, /products);MenuItemLink servicesLink new MenuItemLink(Services, /services);Menu subMenu new Menu(Sub);subMenu.addMenuItem(productsLink);subMenu.addMenuItem(servicesLink);mainMenu.addMenuItem(subMenu);mainMenu.display();}
}
控制台输出
Menu: Main
Link: Home, URL: /home
Link: About, URL: /about
Menu: Sub
Link: Products, URL: /products
Link: Services, URL: /services
这段代码创建了一个简单的网页导航菜单树其中包含一级菜单和二级菜单。我们使用了组合模式使得对于一级菜单和二级菜单的处理方式是一致的。通过递归调用 display() 方法我们可以将整个菜单树打印出来。
这就是用网页菜单树来说明组合模式的基本思想。通过将菜单项组合成树状结构我们可以轻松地处理复杂的菜单关系并且对于客户端来说可以用统一的方式处理单个菜单项和菜单组合
组合模式使用场景
组合模式在许多场景中都是非常有用的特别是当你需要处理对象的层次结构且希望对单个对象和组合对象进行一致性处理时。以下是一些常见的场景
GUI组件图形用户界面GUI通常具有嵌套的层次结构例如窗口包含面板面板包含按钮等。组合模式可以用来构建和管理GUI组件的层次结构使得对于单个组件和组合组件的处理方式一致。
文件系统文件系统具有树状结构文件夹可以包含文件和其他文件夹。组合模式可以用来表示文件系统的层次结构并且可以统一处理文件和文件夹。
组织结构企业组织结构也通常具有层次关系例如部门包含子部门子部门中可能包含员工或其他子部门。组合模式可以用来管理和操作组织结构。
菜单和导航像前面示例中的网页导航菜单一样菜单和导航通常具有嵌套的层次结构。组合模式可以用来构建和管理菜单和导航的层次结构。
图形对象图形对象也可以使用组合模式来表示例如组合图形可以由多个基本图形对象如线段、矩形、圆形组成从而可以对整个图形进行统一的操作。
总之任何具有层次结构的对象集合且希望对单个对象和组合对象进行一致性处理的情况下都可以考虑使用组合模式。