• IO----铺垫:装饰者模式


    什么是设计模式???

    • 设计模式是一套被反复使用、多数人知晓、经过分类编目的优秀代码设计经验的总结。

    什么是装饰者模式???这货接下来可是重头戏,可不能随便了事:Yes ! We need our heart to learn it !

    装饰模式的英文原话:

    • Attach additional responsibilities to an object dynamically keeping the interface.Decorators provide a flexible alternative to subclassing for extending functionality.

    装饰模式的类图如下(图片来自百度):

    接下来看一个比较容易理解的例子:

        //Car.java  相当于上图中的Component
        public interface Car{
            public void show();
        }
        
        //Benz.java  相当于上图的ConcreteComponent
        public class Benz implements Car{
            public void show(){
                System.out.println("This is Bens");
            }
        }
    
        //CarDecorator.java  //相当于上图的Decorator
        public abstract class CarDecorator implements Car{
            private Car car=null;
            public CarDEcorator(Car car){
                this.car=car;
            }
            public void show(){
                this.car.show();
            }
        }
    
        //ConcreteCarDecorator.java  相当于上图的ConreteDecoratorA(B)
        public ConcreteCarDecorator extends CarDecorator{
            public ConcreteCarDecorator(Car car){
                super(car);
            }   
            //This is a expend method!
            public void print(){
                System.out.println("This is on expand method!");
            }
            public void show(){
                super.show();
                //do something other...
            }
        }
    

    接着看一下IO流中的InputStream:

    看到上图是不是很有感触呢?是不是传说中的装饰者模式?IO中其他的流基本都是这种模式,因此各个模块体系结构很相似!

    在InputStream中,最常用的ConcreteComponent就是FileInputStream了,FilterInputStream就是Decorator,常用的ConcreteDecorator就是DataInputStrsam和BufferedInputStream

    通过使用不同的ConcreteDecorator包装FileInputStream,便可对到对File对象执行不同操作!

    好了,关于装饰者模式,我所认识的就是这样了!然后关于具体的InputStream和其他的IO模块,之后将逐一学习!

  • 相关阅读:
    java 调用webService的各种方法
    log4j.properties配置详细
    js的with语句使用方法
    Hibernate 拦截器 Hibernate 监听器
    Axis1.4 WebService
    Servlet
    ROOT android 原理。 基于(zergRush)
    创建固定大小的文件 Linux shell 脚本编写实例
    makefile 自动推导命令
    makefile的变量定义和赋值
  • 原文地址:https://www.cnblogs.com/realsoul/p/5929464.html
Copyright © 2020-2023  润新知