博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java组合模式
阅读量:4631 次
发布时间:2019-06-09

本文共 2063 字,大约阅读时间需要 6 分钟。

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

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

类型:结构型

优点:

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
items=new ArrayList
(); 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

  

转载于:https://www.cnblogs.com/sunliyuan/p/10635920.html

你可能感兴趣的文章
php的文件下载
查看>>
easyui的增删改
查看>>
Sql Server数据库性能优化之索引
查看>>
【Android UI】 Shape详… 分类: ...
查看>>
MFC 屏幕截图(libjpeg bmp转jpg)
查看>>
jQuery中 wrap() wrapAll() 与 wrapInner()的区别
查看>>
第二阶段冲刺第二天
查看>>
JS字符串转换成json对象。。。。
查看>>
yaml语法三大规则
查看>>
【HANA系列】SAP HANA的特点总结
查看>>
修改选中文字的背景色
查看>>
【CodeForces - 546C】Soldier and Cards (vector或队列)
查看>>
Ubuntu 18.04 初始化(server版本 )
查看>>
【BZOJ-1449&2895】球队收益&球队预算 最小费用最大流
查看>>
TCP与UDP
查看>>
FolderSync :The various features and how to use them
查看>>
LPC43xx SGPIO DMA and Interrupts
查看>>
《剑指offer》面试题16—反转链表
查看>>
multiprocessing模块
查看>>
复合数据类型,英文词频统计
查看>>