项目源码已提交github:https://github.com/ckl001/designPattem_java
package com.Ljava.design.pattem.structural.adapter.singleEg;
/**
* @Auther 20173
* @Date 2019-4-9 11:58
* @Des 交流电 220V
**/
public class AC220 {
public int outputAC220V(){
int output = 220;
System.out.println("输出交流电" + output + "V");
return output;
}
}
package com.Ljava.design.pattem.structural.adapter.singleEg;
/**
* 直流电 5V
*/
public interface DC5 {
int outputDC5V();
}
``package com.Ljava.design.pattem.structural.adapter.singleEg;
/**
* @Auther 20173
* @Date 2019-4-9 12:10
* @Des 电流适配器
**/
public class PowerAdapter implements DC5{
public AC220 ac220 = new AC220();
/**
* 220V 交流电转 5V直流电
* @return
*/
@Override
public int outputDC5V() {
int adapterInput = ac220.outputAC220V();
int adapterOutput = adapterInput / 44;
System.out.println("使用PowerAdapter输入AC:"+adapterInput+"V"+"输出DC:"+adapterOutput+"V");
return adapterOutput;
}
}
package com.Ljava.design.pattem.structural.adapter.singleEg;
/**
-
@Auther 20173
-
@Date 2019-4-9 12:13
-
@Des TODO
**/
public class Test {public static void main(String[] args) {
DC5 dc5 = new PowerAdapter();
dc5.outputDC5V();
}
}
-----------------------------------------------------------------------------
对象适配
package com.Ljava.design.pattem.structural.adapter.objectadapter;
/**
- @Auther 20173
- @Date 2019-4-9 14:22
- @Des 目标方法 – 接口
**/
public interface Target {
void request();
}
package com.Ljava.design.pattem.structural.adapter.objectadapter;
/**
- @Auther 20173
- @Date 2019-4-9 14:27
- @Des 当前目标方法
**/
public class ConcreteTarget implements Target {
@Override
public void request() {
System.out.println(“concreteTarget目标方法”);
}
}
package com.Ljava.design.pattem.structural.adapter.objectadapter;
/**
-
@Auther 20173
-
@Date 2019-4-9 14:20
-
@Des 被适配者
**/
public class Adaptee {public void adapterRequest(){
System.out.println(“被适配者的方法!”);
}
}
package com.Ljava.design.pattem.structural.adapter.objectadapter;
/**
- @Auther 20173
- @Date 2019-4-9 14:22
- @Des 适配器
**/
public class Adapter implements Target {
private Adaptee adaptee = new Adaptee();
@Override
public void request() {
adaptee.adapterRequest();
}
}
package com.Ljava.design.pattem.structural.adapter.objectadapter;
/**
-
@Auther 20173
-
@Date 2019-4-9 14:27
-
@Des TODO
**/
public class Test {public static void main(String[] args) {
Target target = new ConcreteTarget();
target.request();Target adapterTarget = new Adapter(); adapterTarget.request();
}
}
----------------------------------------------------------------------------
类适配
package com.Ljava.design.pattem.structural.adapter.classadapter;
/**
- @Auther 20173
- @Date 2019-4-9 14:22
- @Des 目标方法 – 接口
**/
public interface Target {
void request();
}
package com.Ljava.design.pattem.structural.adapter.classadapter;
/**
- @Auther 20173
- @Date 2019-4-9 14:27
- @Des 当前目标方法
**/
public class ConcreteTarget implements Target {
@Override
public void request() {
System.out.println(“concreteTarget目标方法”);
}
}
package com.Ljava.design.pattem.structural.adapter.classadapter;
/**
-
@Auther 20173
-
@Date 2019-4-9 14:20
-
@Des 被适配者
**/
public class Adaptee {public void adapterRequest(){
System.out.println(“被适配者的方法!”);
}
}
package com.Ljava.design.pattem.structural.adapter.classadapter;
/**
- @Auther 20173
- @Date 2019-4-9 14:22
- @Des 适配器
**/
public class Adapter extends Adaptee implements Target{
@Override
public void request() {
super.adapterRequest();
}
}
package com.Ljava.design.pattem.structural.adapter.classadapter;
/**
-
@Auther 20173
-
@Date 2019-4-9 14:27
-
@Des TODO
**/
public class Test {public static void main(String[] args) {
Target target = new ConcreteTarget();
target.request();Target adapterTarget = new Adapter(); adapterTarget.request();
}
}