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

      

  • 相关阅读:
    实验楼第二期比赛第二题
    基础练习题
    基本数据类型:数字、字符串、列表、元祖、字典、集合
    二进制与十进制转换
    Python基础--1.2 变量循环基础介绍
    Python基础--1.1Python基础介绍
    旋转木马特效代码
    javascript中全屏滑动效果实现
    正则基础知识总结
    getElementsByClassName 方法兼容性封装方法二
  • 原文地址:https://www.cnblogs.com/sunliyuan/p/10635920.html
Copyright © 2011-2022 走看看