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

      

  • 相关阅读:
    List
    集合
    layui树状组件tree回显如果子节点选中,当前主节点下所有元素都会选中问题修复
    layui富文本编辑器提交时无法获取到值
    thinkphp6+layui富文本编辑器页面回显显示HTML标签
    layui获取树形菜单所有选中的值
    php7将二维数组转为树状数组
    jq处理img标签找不到图片,显示指定图片
    thinkphp6根据访问设备不同访问不同模块
    layui怎么进入页面监听select的值然后重新渲染页面
  • 原文地址:https://www.cnblogs.com/sunliyuan/p/10635920.html
Copyright © 2011-2022 走看看