(结构型模式一)适配器模式

来源:互联网 发布:中国网络资讯台 山寨 编辑:程序博客网 时间:2024/05/16 10:49
package com.eyugame.modle;/** * 适配器模式 * @author JYC506 * *//*比如A接口吃饭方式想跟B一样,但不需要其他方法比如:洗澡,上课啊, 所以找来C类,Ca类有A类的特征,又继承B类,A类说我吃饭就按C类吃饭的方法也就是按B类的具体方法吃饭*//*类的适配器模式*/public class Adapter extends Source implements IAdapter{@Overridepublic void myMethod() {System.out.println("我自己的方法1");}    public static void main(String[] args) {    /*类的适配器模式*/IAdapter adapter=new Adapter();adapter.method1();adapter.myMethod();/*对象的适配器模式*/IAdapter adapter2=new Adapter2();adapter2.method1();adapter2.myMethod();/*接口的适配器模式*/ISource source1=new Source1();ISource source2=new Source2();source1.method1();source2.method1();}}/*对象的适配器模式*//*我直接把source对象包含进来任我所用*/class Adapter2 implements IAdapter{    private Source source=new Source();        @Overridepublic void method1() {this.source.method1();}@Overridepublic void myMethod() {System.out.println("我自己的方法2");}}interface IAdapter{/*想用别人方法,方法名称跟source一样*/void method1();/*自己的方法*/void myMethod();}class Source{public void method1(){System.out.println("我是source类的方法,适配器接口想用我这个方法");}public void method2(){System.out.println("打酱油2,接口不想用的");}public void method3(){System.out.println("打酱油3,接口不想用的");}}/*我想用ISource的方法method1其他的方法不想实现*/class Source1 extends AbstractSource{@Overridepublic void method1() {System.out.println("source1 method1");}}/*我想用ISource的方法method1其他的方法不想实现*/class Source2 extends AbstractSource{@Overridepublic void method1() {System.out.println("source2 method2");}}/*抽象类中间者,负责实现空实现不需要的方法*/abstract class AbstractSource implements ISource{@Overridepublic void method2() {}@Overridepublic void method3() {}@Overridepublic void method4() {}@Overridepublic void method5() {}}/*我有很多方法*/interface ISource{void method1();void method2();void method3();void method4();void method5();}

0 0