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 }
  • 相关阅读:
    Json对象处理.将对象处理成dic数组.
    asp.net core 创建允许跨域请求的api, cors.
    (转载)dotnet core 中文乱码 codepages
    (转载)Memcached和Redis简介
    发送Json数据,WebApi查看时为Null的问题(已解决)
    Vs2017获取Git空仓库后创建解决方案及项目无法推送,推送失败的问题.
    前端:Jquery 处理同一Name的Radio组时,绑定checked属性异常的问题.(已解决)
    Vs2015 本地git获取的代码目录文件修改后,启动提示error:Unable to start program “C:Program Filesdotnetdotnet.exe” 已解决.
    .net core 发布后提示Start error
    .net core vs2015 vs2017打开后errpr
  • 原文地址:https://www.cnblogs.com/xiongjiawei/p/6845207.html
Copyright © 2011-2022 走看看