package com.eyugame.modle;
/**
* 适配器模式
* @author JYC506
*
*/
/*比如A接口吃饭方式想跟B一样,但不需要其他方法比如:洗澡,上课啊, 所以找来C类,Ca类有A类的特征,又继承B类,A类说我吃饭就按C类吃饭的方法也就是按B类的具体方法吃饭*/
/*类的适配器模式*/
public class Adapter extends Source implements IAdapter{
@Override
public 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();
@Override
public void method1() {
this.source.method1();
}
@Override
public 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{
@Override
public void method1() {
System.out.println("source1 method1");
}
}
/*我想用ISource的方法method1其他的方法不想实现*/
class Source2 extends AbstractSource{
@Override
public void method1() {
System.out.println("source2 method2");
}
}
/*抽象类中间者,负责实现空实现不需要的方法*/
abstract class AbstractSource implements ISource{
@Override
public void method2() {
}
@Override
public void method3() {
}
@Override
public void method4() {
}
@Override
public void method5() {
}
}
/*我有很多方法*/
interface ISource{
void method1();
void method2();
void method3();
void method4();
void method5();
}
(结构型模式一)适配器模式
最新推荐文章于 2022-09-09 09:04:44 发布