zoukankan      html  css  js  c++  java
  • 【java设计模式】【结构模式Structural Pattern】合成模式Composite Pattern

      1 package com.tn.pattern;
      2 
      3 import java.util.Vector;
      4 
      5 public class Client {
      6     public static void main(String[] args) {
      7         Component china=new Composite("中国");
      8         
      9         Component jiangsu=new Composite("江苏");
     10         Component anhui=new Composite("安徽");
     11         
     12         Component nanjing=new Leaf("南京");
     13         Component suzhou=new Leaf("苏州");
     14         
     15         Component hefei=new Leaf("合肥");
     16         Component wuhu=new Leaf("芜湖");
     17         Component maanshan=new Leaf("马鞍山");
     18         
     19         Component beijing=new Leaf("北京");
     20         Component shanghai=new Leaf("上海");
     21         Component tianjing=new Leaf("天津");
     22         Component chongqing=new Leaf("重庆");
     23         
     24         china.add(beijing);
     25         china.add(shanghai);
     26         china.add(tianjing);
     27         china.add(chongqing);
     28         china.add(jiangsu);
     29         china.add(anhui);
     30         jiangsu.add(nanjing);
     31         jiangsu.add(suzhou);
     32         anhui.add(hefei);
     33         anhui.add(wuhu);
     34         anhui.add(maanshan);
     35         
     36         china.getChild();
     37         System.out.println("---------------------------");
     38         jiangsu.getChild();
     39         System.out.println("---------------------------");
     40         anhui.getChild();
     41         System.out.println("---------------------------");
     42         beijing.doSth();
     43         shanghai.doSth();
     44         tianjing.doSth();
     45         chongqing.doSth();
     46         System.out.println("---------------------------");
     47         nanjing.doSth();
     48         suzhou.doSth();
     49         System.out.println("---------------------------");
     50         hefei.doSth();
     51         wuhu.doSth();
     52         maanshan.doSth();
     53     }
     54 }
     55 
     56 interface Component{
     57     void doSth();
     58     void add(Component component);
     59     void getChild();
     60 }
     61 
     62 class Leaf implements Component{
     63     private String name;
     64     public Leaf(String name){
     65         this.name=name;
     66     }
     67     @Override
     68     public void doSth() {
     69         System.out.println(name+" Leaf doSth()");
     70     }
     71     public void add(Component component){}
     72     public void getChild(){}
     73 }
     74 
     75 class Composite implements Component{
     76     private String name;
     77     public Composite(String name){
     78         this.name=name;
     79     }
     80     private Vector<Component> components=new Vector<Component>();
     81     @Override
     82     public void doSth() {
     83         System.out.println(name+" Composite doSth()");
     84     }
     85     public void add(Component component){
     86         components.addElement(component);
     87     }
     88     public void remove(Component componet){
     89         components.removeElement(componet);
     90     }
     91     public void getChild(){
     92         for(Component component:components){
     93             if(component instanceof Leaf){
     94                 component.doSth();
     95             }else{
     96                 component.doSth();
     97                 component.getChild();
     98             }
     99         }
    100     }
    101 }
  • 相关阅读:
    Pyhton 单行、多行注释方法
    laravel中不使用 remember_token时退出报错,如何解决?
    PHP实现打印出库单,有没有实现过?
    是不等号的意思
    PHP如何输出合并单元格的表
    一起谈.NET技术,.Net创建Excel文件(插入数据、修改格式、生成图表)的方法 狼人:
    一起谈.NET技术,ASP.NET MVC 通过 FileResult 向浏览器发送文件 狼人:
    一起谈.NET技术,asp.net Ajax AutoComplete控件使用 狼人:
    一起谈.NET技术,Silverlight 拖动复制控件 狼人:
    一起谈.NET技术,ASP.NET Process Model之二:ASP.NET Http Runtime Pipeline[上篇] 狼人:
  • 原文地址:https://www.cnblogs.com/xiongjiawei/p/6845207.html
Copyright © 2011-2022 走看看