Java组合模式

网友投稿 265 2022-11-30

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 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

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:DDD领域模型数据访问权限之权限(十二)
下一篇:@OneToMany查询陷入循环引用的解决方案
相关文章

 发表评论

暂时没有评论,来抢沙发吧~