当前位置: 首页 > news >正文

内衣网站建设推广品牌营销传播

内衣网站建设推广,品牌营销传播,阿里巴巴国际站app,特卖网站设计一、介绍#xff1a; 1、定义#xff1a;组合多个对象形成树形结构以表示“整体-部分”的关系的层次结构。组合模式对叶子节点和容器节点的处理具有一致性#xff0c;又称为整体-部分模式。 2、优缺点#xff1a; 优点#xff1a; #xff08;1#xff09;高层模块调…一、介绍 1、定义组合多个对象形成树形结构以表示“整体-部分”的关系的层次结构。组合模式对叶子节点和容器节点的处理具有一致性又称为整体-部分模式。 2、优缺点 优点 1高层模块调用简单组合模式使得客户端代码可以一致地处理单个对象和组合对象无须关心自己处理的是单个对象还是组合对象这简化了客户端代码。 2节点自由增加更容易在组合体内加入新的对象客户端不会因为加入了新的对象而更改源代码。 缺点 1在使用组合模式时其叶子和树枝的声明都是实现类而不是接口违反了依赖倒置原则。 2设计较复杂客户端需要花更多时间理清类之间的层次关系。 3不容易限制容器中的构件。 3、组成 1抽象构件Component角色它的主要作用是为树叶构件和树枝构件声明公共接口并实现它们的默认行为。在透明式的组合模式中抽象构件还声明访问和管理子类的接口在安全式的组合模式中不声明访问和管理子类的接口管理工作由树枝构件完成。总的抽象类或接口定义一些通用的方法比如新增、删除。 2树枝构件Composite角色 / 中间构件是组合中的分支节点对象它有子节点用于继承和实现抽象构件。它的主要作用是存储和管理子部件通常包含 Add()、Remove()、GetChild() 等方法。 3树叶构件Leaf角色是组合中的叶节点对象它没有子节点用于继承或实现抽象构件。 // 定义抽象构件 public abstract class Component {protected String name;public Component(String name) {this.name name;}public abstract void add(Component component);public abstract void remove(Component component);public abstract void display(); }// 定义叶子构件 public class Leaf extends Component {public Leaf(String name) {super(name);}Overridepublic void add(Component component) {System.out.println(Cannot add to a leaf);}Overridepublic void remove(Component component) {System.out.println(Cannot remove from a leaf);}Overridepublic void display() {System.out.println(Leaf: name);} }// 定义容器构件 public class Composite extends Component {private ListComponent children new ArrayList();public Composite(String name) {super(name);}Overridepublic void add(Component component) {children.add(component);}Overridepublic void remove(Component component) {children.remove(component);}Overridepublic void display() {System.out.println(Composite: name);for (Component component : children) {component.display();}} }// 客户端代码 public class Client {public static void main(String[] args) {Component root new Composite(root);Component leaf1 new Leaf(leaf1);Component leaf2 new Leaf(leaf2);Component composite1 new Composite(composite1);Component leaf3 new Leaf(leaf3);Component composite2 new Composite(composite2);root.add(leaf1);root.add(leaf2);root.add(composite1);composite1.add(leaf3);composite1.add(composite2);root.display();} } 4、应用场景部分、整体场景如树形菜单文件、文件夹的管理。 二、demo 1、菜单 1数据库model public class MenuDTO {private String menuName;private String menuCode;private String parentMenuCode;public MenuDTO(String menuName,String menuCode,String parentMenuCode){this.menuCode menuCode;this.menuName menuName;this.parentMenuCode parentMenuCode;}/**省略所有set、get芳芳*/ }抽象构件Component public abstract class MenuComponent extends MenuDTO {MenuComponent(String menuName, String menuCode,String parentMenuCode) {super(menuName, menuCode,parentMenuCode);}void addMenu(MenuComponent component){}void removeMenu(MenuComponent component){} }2树枝构件Composite  public class MenuVO extends MenuComponent {private ListMenuComponent children new ArrayList();MenuVO(String menuName, String menuCode,String parentMenuCode) {super(menuName, menuCode,parentMenuCode);}Overridevoid addMenu(MenuComponent component) {children.add(component);}Overridevoid removeMenu(MenuComponent component) {} }3树叶 public class MenuLeaf extends MenuComponent {MenuLeaf(String menuName, String menuCode,String parentMenuCode) {super(menuName, menuCode,parentMenuCode);}Overridevoid addMenu(MenuComponent component) {super.addMenu(component);}Overridevoid removeMenu(MenuComponent component) {super.removeMenu(component);} } 客户端 public class Test {public static void main(String args[]) {MenuComponent menuVOS listMenus();System.out.println(menuVOS);}public static MenuComponent listMenus(){//模拟数据库查询查询所有一级菜单(menu_type 1)、二级菜单(menu_type 2)ListMenuDTO firstMenus new ArrayList();MenuDTO menuDTO new MenuDTO(菜单1,cd1,root);firstMenus.add(menuDTO);menuDTO new MenuDTO(菜单2,cd2,root);firstMenus.add(menuDTO);menuDTO new MenuDTO(菜单3,cd3,root);firstMenus.add(menuDTO);ListMenuDTO secondMenus new ArrayList();menuDTO new MenuDTO(菜单1-1,cd1-1,cd1);secondMenus.add(menuDTO);menuDTO new MenuDTO(菜单1-2,cd1-2,cd1);secondMenus.add(menuDTO);menuDTO new MenuDTO(菜单2-1,cd2-1,cd2);secondMenus.add(menuDTO);MapString, ListMenuDTO childMenuMap secondMenus.stream().collect(Collectors.groupingBy(MenuDTO::getParentMenuCode));/**实现* 根节点* 菜单1 菜单2 菜单3*菜单1-1 菜单1-2 菜单2-1* *///1、定义根节点MenuComponent root new MenuVO(根节点,root,null);//2、处理菜单层级for(MenuDTO firstMenu : firstMenus){//二级菜单MenuComponent firstMenuVO new MenuVO(firstMenu.getMenuName(),firstMenu.getMenuCode(),firstMenu.getParentMenuCode());//三级菜单ListMenuDTO secondMenuVOs childMenuMap.get(firstMenu.getMenuCode());if(!CollectionUtils.isEmpty(secondMenuVOs)){for(MenuDTO secondMenu : secondMenuVOs){MenuComponent secondMenuVO new MenuVO(secondMenu.getMenuName(),secondMenu.getMenuCode(),secondMenu.getParentMenuCode());firstMenuVO.addMenu(secondMenuVO);}}root.addMenu(firstMenuVO);}return root;} } 运行main方法  2、文件夹 1抽象构件Component public abstract class FileComponent {//文件名称protected String name;//文件的层级 1 一级目录 2 二级目录 ...protected Integer level;//文件的类型 1 文件夹 2文件protected Integer type;//添加子文件/文件夹public abstract void add(FileComponent fileComponent);//移除子文件/文件夹public abstract void remove(FileComponent fileComponent);//获取指定的子文件/文件夹public abstract FileComponent getChild(int index);//打印子 子文件/子文件夹 名称的方法public abstract void print(); }2树枝构件Composite public class FileFolder extends FileComponent{//文件夹可以有多个子文件夹或者子文件private ListFileComponent fileComponentList;public FileFolder(String name, Integer level, Integer type) {this.name name;this.level level;this.type type;this.fileComponentList new ArrayList();}Overridepublic void add(FileComponent fileComponent) {fileComponentList.add(fileComponent);}Overridepublic void remove(FileComponent fileComponent) {fileComponentList.remove(fileComponent);}Overridepublic FileComponent getChild(int index) {return fileComponentList.get(index);}Overridepublic void print() {//打印菜单名称for (int i 0; i level; i) {System.out.print(\t);}System.out.println(name);//打印子菜单或者子菜单项名称for (FileComponent component : fileComponentList) {component.print();}} }3树叶构件Leaf public class FileItem extends FileComponent{public FileItem(String name, Integer level, Integer type) {this.name name;this.level level;this.type type;}Overridepublic void add(FileComponent fileComponent) {}Overridepublic void remove(FileComponent fileComponent) {}Overridepublic FileComponent getChild(int index) {return null;}Overridepublic void print() {//打印文件的名称for (int i 0; i level; i) {System.out.print(\t);}System.out.println(name);} }客户端 public class Test {public static void main(String[] args) {//定义根目录FileComponent rootComponent new FileFolder(我是根目录,1,1);//定义二级文件夹FileComponent secondLevelComponent new FileFolder(我是二级目录,2,1);//定义文件FileComponent file new FileItem(我是文件,3,2);//向根目录添加二级目录rootComponent.add(secondLevelComponent);//向二级目录添加文件secondLevelComponent.add(file);//打印rootComponent.print();} }
http://www.pierceye.com/news/304212/

相关文章:

  • seo网站模板深圳建设局和住建局
  • 全国做网站的公司有哪些正规网站做菠菜广告
  • 成都有哪些做公司网站的公司动漫制作专业用什么笔记本电脑
  • 模型外包网站网站建设费用 多少钱
  • 课程资源网站开发 jsp免费做网站自助建站
  • 陕西网站备案代理网站代码隐蔽代码
  • 做网站应该注意免费网站开发合同
  • 网站运营推广怎做网站引导制作
  • 在川航网站购票后怎么做公司黄页网
  • html音乐网页完整代码长春做网站优化的公司
  • wordpress 网站标题为什么尽量不要备案域名
  • 营销型企业网站建设ppt百度一下你就知道123
  • 网络优化师自学网站建设银行网站的特点
  • 苏州网站建设规划网站域名年费
  • 建筑效果图素材网站网站设计证书
  • 一个网站备案多个域名吗合肥万户网站建设
  • 小型企业网站排名前十做网站的条件
  • 成都网站建设有名的公司网上商城制作哪家好
  • 做网站宣传多少钱黔东南网站设计公司
  • 网站开发人员职业分析wordpress数据库替换网址
  • ps切片工具做网站道滘镇网站仿做
  • 电子商务他们的代表网站html5视频网站模板
  • 广州网站建设乐云seo上海到北京高铁最快几小时
  • wordpress 音乐网站网站建设开发软件有哪些方面
  • 湛江网站营销163网站是jsp做的吗
  • 营山网站建设陕西做网站的公司地址
  • 十大网站黄页免费加盟办厂代加工
  • 上海 网站建设google深圳建网站 (报价)
  • 响应式做的比较好的网站校园网认证登录入口
  • 专业网站设计学校空间放两个网站