io流(适配器模式)

适配器模式

  • 例如:用户的需求与解决的代码不匹配,这就需要适配器

    • 类适配器
    package com.bjsxt.test11;
    //被适配的类
    public class Adaptee {
        public void surf(){
            System.out.println("提供上网功能!");
        }
    }
    //客户的目的就是为了上网
    interface Target{
        void toSurf();
    }
    class Client{
        public void want(Target t){
            t.toSurf();
        }
    }
    //进行适配工作
    class Adapter extends Adaptee implements Target{
        @Override
        public void toSurf() {
            System.out.println("转换。。。");
            super.surf();
        }
    }
    class Test{
        public static void main(String[] args) {
            new Client().want(new Adapter());
        }
    }
    
    • 对象适配器(仅改变适配器的类即可)
    package com.bjsxt.test11;
    //被适配的类
    public class Adaptee {
        public void surf(){
            System.out.println("提供上网功能!");
        }
    }
    //客户的目的就是为了上网
    interface Target{
        void toSurf();
    }
    class Client{
        public void want(Target t){
            t.toSurf();
        }
    }
    //进行适配工作
    //对象适配器就更改适配器,不改其他的
    class Adapter implements Target{
        Adaptee ae;
        public Adapter(Adaptee ae){
            this.ae=ae;
        }
        @Override
        public void toSurf() {
            System.out.println("转换。。。");
            ae.surf();
        }
    }
    class Test{
        public static void main(String[] args) {
            new Client().want(new Adapter(new Adaptee()));
        }
    }
    
  • 适配器模式的优缺点:

    优点:

    ​ 更好的复用性

    ​ 更好的扩展性:调用自己开发的功能,从而扩展系统的功能

    缺点:

    ​ 过多的适配器会让系统特别的凌乱,如果不是很必要,可以不适用适配器,而是直接对系统进行重构

posted on   汪汪程序员  阅读(144)  评论(0编辑  收藏  举报

编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示