/*
* 装饰者设计模式:增强一个类的功能,而且还可以让这些装饰类互相装饰
* 装饰者设计模式的步骤:
* 1.在装饰类的内部维护一个被装饰类的引用
* 2.让装饰类有一个共同的父类或者是父接口
*
* BufferedReader是不是拓展了FileReader的功能
* BufferedWriter也是拓展了FileWriter的功能
*
* 需求1:编写一个类拓展了BufferedReader的功能,增强readLine方法返回的字符串带有行号
* 需求2:编写一个类拓展了BufferedReader的功能,增强readLine方法返回的字符串带有分号
* 需求3:编写一个类拓展了BufferedReader的功能,增强readLine方法返回的字符串带有双引号
* 需求4:编写一个类拓展了BufferedReader的功能,增强readLine方法返回的字符串带有行号+双引号
* 需求5:编写一个类拓展了BufferedReader的功能,增强readLine方法返回的字符串带有行号+分号
* 需求6:编写一个类拓展了BufferedReader的功能,增强readLine方法返回的字符串带有分号+双引号
* 需求7:编写一个类拓展了BufferedReader的功能,增强readLine方法返回的字符串带有行号+分号+双引号
*
* 增强一个类的功能时候我们可以选择继承:
* 通过继承实现增强一个类的功能优点:代码结构清晰,通俗易懂。
* 缺点:使用不灵活,会导致继承的体系过于庞大。
*
* 继承实现的增强类和修改模式实现的增强类有何区别?
* 继承实现的增强类:
* 优点:代码结构清晰,而且实现简单
* 缺点:对于每一个的需要增强的类都需要创建具体的子类来帮助其增强,这样会导致继承体系过去庞大。
* 修饰模式实现的增强类:
* 优点:内部可以通过多态技术对多个需要增强的类进行增强,可以是这些装饰类达到相互装饰的效果。使用比较灵活
* 缺点:需要内部通过多态技术维护需要被增强的类的实例。进而使得代码稍微复杂。
*
* 装饰者设计模式:增强一个类的功能,而且还可以让这些装饰类互相装饰
* 装饰者设计模式的步骤:
* 1.在装饰类的内部维护一个被装饰类的引用
* 2.让装饰类有一个共同的父类或者是父接口
*
* BufferedReader是不是拓展了FileReader的功能
* BufferedWriter也是拓展了FileWriter的功能
*
* 需求1:编写一个类拓展了BufferedReader的功能,增强readLine方法返回的字符串带有行号
* 需求2:编写一个类拓展了BufferedReader的功能,增强readLine方法返回的字符串带有分号
* 需求3:编写一个类拓展了BufferedReader的功能,增强readLine方法返回的字符串带有双引号
* 需求4:编写一个类拓展了BufferedReader的功能,增强readLine方法返回的字符串带有行号+双引号
* 需求5:编写一个类拓展了BufferedReader的功能,增强readLine方法返回的字符串带有行号+分号
* 需求6:编写一个类拓展了BufferedReader的功能,增强readLine方法返回的字符串带有分号+双引号
* 需求7:编写一个类拓展了BufferedReader的功能,增强readLine方法返回的字符串带有行号+分号+双引号
*
* 增强一个类的功能时候我们可以选择继承:
* 通过继承实现增强一个类的功能优点:代码结构清晰,通俗易懂。
* 缺点:使用不灵活,会导致继承的体系过于庞大。
*
* 继承实现的增强类和修改模式实现的增强类有何区别?
* 继承实现的增强类:
* 优点:代码结构清晰,而且实现简单
* 缺点:对于每一个的需要增强的类都需要创建具体的子类来帮助其增强,这样会导致继承体系过去庞大。
* 修饰模式实现的增强类:
* 优点:内部可以通过多态技术对多个需要增强的类进行增强,可以是这些装饰类达到相互装饰的效果。使用比较灵活
* 缺点:需要内部通过多态技术维护需要被增强的类的实例。进而使得代码稍微复杂。
*
* */
运行结果:Demo01.java内容每一行开头有行号,末尾有分号。
/*
*练习:
* 一家三口每个人都会工作,儿子的工作就是画画,母亲的工作就是在儿子的基础上做一个增强,不单止画画,还可以上涂料
* 爸爸的工作就是在妈妈的基础上做了增强,就是上画框
* */