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();
            }
        }
    }
    

      

  • 相关阅读:
    K2 BPM介绍(2)
    K2 BPM介绍(1)
    认识BPM
    使用VS Code发布博客
    IIS 使用 HTTP/2
    IIS 8的第一次请求不变慢如何配置
    C# 图片识别技术(支持21种语言,提取图片中的文字)
    第九讲 C#练习题
    c#基础 第八讲
    c#基础 第六讲
  • 原文地址:https://www.cnblogs.com/sunliyuan/p/10635920.html
Copyright © 2011-2022 走看看