设计模式之《结构型模式》版块(基于Java) (8)

Java的IO结构,FilterInputStream就是一个装饰者

设计模式之《结构型模式》版块(基于Java)

说明(代码 + 原码截图) public class Decorator { public static void main(String[] args) throws Exception { /*说明 1.InputStream是抽象类,类似前面的Drink 2.FileInputStream 是 InputStream 的子类,类是前面的DeCaf,LongBlack 被装饰者 3.FilterInputStream 是 InputStream 的子类,类似前面的Decorator 修饰者 4.DataInputStream 是 FilterInputStream 的子类,具体的修饰者,类似前面的Milk,Soy等 5.FilterInputStream 类有一个成员变量protected volatile InputStream in; 即包含被装饰者 6.分析的出在jdk的io体系中 就是使用了装饰者模式 */ DataInputStream dis = new DataInputStream(new FileInputStream("d:\\test.txt")); System.out.println(dis.read()); dis.close(); } }

设计模式之《结构型模式》版块(基于Java)

设计模式之《结构型模式》版块(基于Java)

设计模式之《结构型模式》版块(基于Java)

设计模式之《结构型模式》版块(基于Java)

组合模式 应用案例 - 学校院系展示需求

编写程序展示一个学校院系结构:需求是这样,要在一个页面中展示出学校的院系 组成,一个学校有多个学院,一个学院有多个系。如图:

设计模式之《结构型模式》版块(基于Java)

传统方案解决学校院系展示 示意图

设计模式之《结构型模式》版块(基于Java)

传统方案解决学校院系展示存在的问题分析

学院看做是学校的子类,系是学院的子类,这样实际上是站在组织大小来进行分 层次的

实际上我们的要求是 :在一个页面中展示出学校的院系组成,一个学校有多个 学院,一个学院有多个系, 因此这种方案,不能很好实现的管理的操作,比如 对学院、系的添加,删除,遍历等

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzzjxd.html