java IO流 笔记整理

IO流三种分类方式:

1.方向:输入流和输出流

2.流的数据单位:字节流和字符流

3.功能:节点流和处理流

IO流的四大抽象类:

字符流: Reader、 writer

字节流:InputStream(读数据)

OutputSream(写数据)

IO流的特点:

1.单向性:从源端到目的端

2.对称性:Reader <------->writer  、InputStream<------>OutputStream

IO流运用的设计模式:

1.Adapter模式

概念:将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。

Adapter模式分为:类适配器模式对象适配器模式

对象适配器:

/// <summary>
    /// 定义客户端期待的接口
    /// </summary>
    public class Target
    {
        /// <summary>
        /// 使用virtual修饰以便子类可以重写
        /// </summary>
        public virtual void Request()
        {
            Console.WriteLine("This is a common request");
        }
    }

    /// <summary>
    /// 定义需要适配的类
    /// </summary>
    public class Adaptee
    {
        public void SpecificRequest()
        {
            Console.WriteLine("This is a special request.");
        }
    }

    /// <summary>
    /// 定义适配器
    /// </summary>
    public class Adapter:Target
    {
        // 建立一个私有的Adeptee对象
        private Adaptee adaptee = new Adaptee();

        /// <summary>
        /// 通过重写,表面上调用Request()方法,变成了实际调用SpecificRequest()
        /// </summary>
        public override void Request()
        {
            adaptee.SpecificRequest();
        }
    }
复制代码

  4.3 客户端代码

复制代码
    class Program
    {
        static void Main(string[] args)
        {
            // 对客户端来说,调用的就是Target的Request()
            Target target = new Adapter();
            target.Request();

            Console.Read();
        }
    }
复制代码

2.装饰模式

概念:

 动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更灵活。

  原理:增加一个修饰类包裹原来的类,包裹的方式一般是通过在将原来的对象作为修饰类的构造函数的参数。装饰类实现新的功能,但是,在不需要用到新功能的地方,它可以直接调用原来的类中的方法。修饰类必须和原来的类有相同的接口。



你可能感兴趣的:(java,设计模式,IO流)