zoukankan      html  css  js  c++  java
  • Java组合模式

    定义:将对象组合成树形结构以表示  部分--整体的层次结构

    组合模式使客户端对单个对象和组合对象保持一致的方式处理

    类型:结构型

    优点:

    1.清楚地定义分层次的复杂对象,表示对象的全部去或部分层次

    2.让客户端忽略了层次的差异,方便对整个层次结构进行控制

    3.简化客户端代码

    4.符合开闭原则

    public abstract class CatalogComponent {
        public void add(CatalogComponent catalogComponent){
            throw new UnsupportedOperationException("不支持添加操作");
        }
        public void remove(CatalogComponent catalogComponent){
            throw new UnsupportedOperationException("不支持删除操作");
        }
        public String getName(CatalogComponent catalogComponent){
            throw new UnsupportedOperationException("不支持获取名称操作");
        }
        public double getPrice(CatalogComponent catalogComponent){
            throw new UnsupportedOperationException("不支持获取价格操作");
        }
        public void print(){
            throw  new UnsupportedOperationException("不支持打印操作");
        }
    }
    

      

    public class Course extends CatalogComponent {
        private  String name;
        private  double price;
    
        public Course(String name, double price) {
            this.name = name;
            this.price = price;
        }
    
        @Override
        public String getName(CatalogComponent catalogComponent) {
            return this.name;
        }
    
        @Override
        public double getPrice(CatalogComponent catalogComponent) {
            return this.price;
    
        }
    
        @Override
        public void print() {
            System.out.println("Course Name:"+name+" price:"+price);
        }
    }
    

      

    public class CourseCatalog extends  CatalogComponent{
        private List<CatalogComponent> items=new ArrayList<CatalogComponent>();
        private  String name;
        private  Integer level;
    
        public CourseCatalog(String name,Integer level) {
            this.name = name;
            this.level=level;
        }
    
        @Override
        public void add(CatalogComponent catalogComponent) {
            items.add(catalogComponent);
        }
    
        @Override
        public void remove(CatalogComponent catalogComponent) {
            items.remove(catalogComponent);
        }
    
        @Override
        public void print() {
            System.out.println(this.name);
            for(CatalogComponent catalogComponent:items){
                if(this.level!=null){
                    for(int i=0;i<this.level;i++){
                        System.out.println("   ");
                    }
                }
                catalogComponent.print();
            }
        }
    }
    

      

  • 相关阅读:
    Win10 iot 配置防火墙限制应用部署
    未能加载文件或程序集“********”或它的某一个依赖项。试图加载格式不正确的程序。
    IIS 支持 m3u8
    UWP WebView 禁用缩放
    Code First
    关于 永恒之蓝 和 MS17-010 补丁
    《 罗辑思维 成大事者不纠结》读书笔记
    <王川自选集第一卷电子书 >读书笔记
    <王二的经济学故事>读书笔记
    <以交易为生>读书笔记
  • 原文地址:https://www.cnblogs.com/sunliyuan/p/10635920.html
Copyright © 2011-2022 走看看