设计模式 一一一 装饰模式

拟墨画扇 提交于 2020-03-07 11:43:49

适配器模式:
    目的:适配器暴露符合外界规范的接口,该接口的具体实现通过调用被适配对象的相应方法来完成。
    
    应用:系统需要使用现有的一个类,但是这个类的接口不符合系统的需要,此时就需要新增一个适配器来解决这个问题。

    角色:
        目标接口:符合外界规范的接口
            
        源对象(被适配的对象):提供相应的功能,但是接口的规范不符合外界的要求
            
        适配器:暴露符合外界规范的接口,通过调用被适配对象的相应方法,然后对其结果进行一定加工来实现。
            
            
jdk中的适配器模式:
    /**
     * 目标接口:Reader。 
     *         说明:Reader的目标是读取数据,但是只能按照字符来读取。
     * 源对象(被适配的对象):InputStream的子类
     *         说明:InputStream可以读数据,但是只能按字节来读取
     * 适配器:InputStreamReader
     *         说明:InputStreamReader通过InputStream来读取数据,并且将读取到的字节流转换为字符流,然后提供给Reader进行读取。
     */        
    public class InputStreamReader extends Reader {

        // StreamDecoder里面封装了InputStream对象,即InputStreamReader间接地封装了InputStream对象。
        private final StreamDecoder sd;

        /**
         * 将源对象(被适配的对象)传入进来,这里源对象可以是InputStream的任何一个子类。
         */
        public InputStreamReader(InputStream in) {
            super(in);
            try {
                sd = StreamDecoder.forInputStreamReader(in, this, (String)null); // 将in封装到sd中。
            } catch (UnsupportedEncodingException e) {
                // The default encoding should always be available
                throw new Error(e);
            }
        }
        
        // 按照字符来读取数据
        public int read() throws IOException {
            return sd.read(); // 使用in来读取数据,然后将读取到的字节流转换为字符流后,再去读取。
        }
    }

    

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!