• 2.设计模式---Adapter模式


    Adapter模式也就是适配器模式,最常见的就是这个:码农必备--------------》笔记本电源适配器:

    那么这玩意到底是干嘛的??

    手工画图一张:

    220V----------------------》11V这中间就需要适配器来适配,但是最后电脑也并不知道这中间到底怎么搞定的,他只明白他链接的是适配器,调用的是适配器,其他的就适配器在维护了!

    适配器模式分2种:

          1.类的继承

          2.委托

    先说第一种:

    上代码后,在分析:

          先上220V电压

            

    package adapter.model;
    /**
     * 相当于小jie妹
     * @author zengrong
     *
     */
    public class Banner {
        private String name;
    
        public Banner(String name) {
            super();
            this.name = name;
        }
        
        public void showwithParen() {
            System.out.println("--特殊可爱小武器---"+name+"-----");
        }
        
        public void showWithAster() {
            System.out.println("---200块真不贵-"+name+"----");
        }
    }

    再来电脑这端

        

    package adapter.model;
    /**
     * 相当于你自己
     * @author zengrong
     *
     */
    public interface Print {
        /**
         * 你的需求
         */
        public abstract void printHow();
        /**
         * 一晚上how much
         */
        public abstract void printOneNightHowMuch();
    }

    适配器:

    package adapter.model;
    /**
     * 相当于小jie妹的"经济人"
     * @author zengrong
     * 小jie妹的经纪人肯定要知道小jie妹的想的啥,当然继承了就完全知道了。
     * 经纪人为了给小jie妹接*,肯定要实现你的方法,来满足你的需求!
     * 哈哈。。。。
     *
     *这是适配器模式中得:类继承的适配模式
     *
     *
     *
     */
    public class PrintBanner extends Banner implements Print {
    
    
        public PrintBanner(String name) {
            super(name);
        }
    
        @Override
        public void printHow() {
        
            showWithAster();
        }
    
        @Override
        public void printOneNightHowMuch() {
            showwithParen();
            
        }
    
    }

    main:

    package adapter.main;
    
    import adapter.model.Print;
    import adapter.model.PrintBanner;
    
    public class App {
        public static void main(String[] args) {
            Print banner = new PrintBanner("凤姐");
            banner.printHow();
            banner.printOneNightHowMuch();
        }
    }

    结果:

     --------------------------华丽分割线-------------------------------------------------------------------------------------------------------

    适配模式----类继承:在这里,我们的适配器必须知道需要适配的一方,是适配的需求,不然也没办法完成适配!

    --------------------------------------------------------------------------------------------------------------------------------------------------

     适配器模式-----委托:相当于这种找小jie妹的事情我不好意思亲自出面,委托出去!

     代码相似:

    贴下:

    package adapter.model;
    /**
     * 相当于小jie妹
     * @author zengrong
     *
     */
    public class BannerTwo {
        private String name;
    
        public BannerTwo(String name) {
            super();
            this.name = name;
        }
        
        public void showwithParen() {
            System.out.println("--特殊可爱小武器---"+name+"-----");
        }
        
        public void showWithAster() {
            System.out.println("---200块真不贵-"+name+"----");
        }
    }
    package adapter.model;
    /**
     * 相当于小jie妹的"经济人"
     * @author zengrong
     * 小jie妹的经纪人肯定要知道小姐妹的想的啥,当然继承了就完全知道了。
     * 经纪人为了给小jie妹接*,肯定要实现你的方法,来满足你的需求!
     * 哈哈。。。。
     *
     *这是适配器模式中得:类继承的适配模式
     *
     *
     *
     */
    public class PrintBannerTwo extends PrintTwo {
    
    	private BannerTwo Banner2;
    	
    	public PrintBannerTwo(String str) {
    		super();
    		this.Banner2=new BannerTwo(str);
    	}
    
    	@Override
    	public void printHow() {
    		Banner2.showWithAster();
    		
    	}
    
    	@Override
    	public void printOneNightHowMuch() {
    		Banner2.showWithAster();
    		
    	}
    
    
    
    }
    

      

    package adapter.model;
    
    public abstract class PrintTwo {
        /**
         * 你的需求
         */
        public abstract void printHow();
        /**
         * 一晚上how much
         */
        public abstract void printOneNightHowMuch();
    }

    适配器弥补了,类之间的缝隙,复用了其他类中得方法,这样也会减少编写多个类,

    但是不是所有的类都要使用适配,例如2个完全功能不相同的完全没必要适配!

    我们在代码的升级过程中,旧的代码和新的代码之间就可以使用适配来进行更新改造!

    -----------------------------------------睡觉!!

     

  • 相关阅读:
    sklearn.neighbors.KNeighborsClassifier的k-近邻算法使用介绍
    修改或定义sudo下的PATH环境变量
    Linux安装deb后缀包
    Linux截图软件shutter安装
    Python变量前'*'和'**'的作用
    线段树入门
    机器学习实战源码&数据集
    Spring Boot 自动配置原理(精髓)
    Spring Boot 注解配置 day03
    Spring Boot 配置_yaml语法介绍 day02
  • 原文地址:https://www.cnblogs.com/java-synchronized/p/6642800.html
Copyright © 2020-2023  润新知