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个完全功能不相同的完全没必要适配!

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

 

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

 

 

 

posted @ 2017-03-29 23:54  指针怒草内存栈  阅读(281)  评论(0编辑  收藏  举报