• 【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 }
  • 相关阅读:
    C++ 的那些坑 (Day 0)
    LeetCode Search a 2D Matrix II
    最大子序列和问题的解(共4种,层层推进)
    如何编译文件(gcc + nasm)
    os如何处理键盘的所有按键,显示or不显示,显示是如何显示
    汇编操作显存
    diy文件系统上创建文件的流程
    在diy的文件系统上创建文件的流程
    建立文件系统
    快速选择
  • 原文地址:https://www.cnblogs.com/xiongjiawei/p/6845207.html
Copyright © 2020-2023  润新知