适配器模式:将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。
特点:
1 实现了客户希望的接口;
2 持有被适配的对象;
3 不改动客户代码和被适配对象。
示例代码:
有一个客户类学生, 骑自行车上学, 自行车是该客户类学生的期望接口, 后来学生长大了,骑摩托车,摩托车的接口不是学生期望的,so...
- //客户希望的接口
- package designpattern.adapter;
- public interface Bike {
- public void go();
- }
- //
- package designpattern.adapter;
- public class LightBike implements Bike{
- public void go() {
- System.out.println("你用的是轻便自行车, 跑的慢。");
- }
- }
- //需要适配的接口
- package designpattern.adapter;
- public interface Moto {
- public void go();
- }
- //
- package designpattern.adapter;
- public class EMoto implements Moto{
- public void go() {
- System.out.println("你用的是电动摩托车, 跑的快。");
- }
- }
- //客户类
- package designpattern.adapter;
- public class Student {
- public void gotoSchool(Bike b){
- b.go();
- }
- }
- //摩托车适配器
- package designpattern.adapter;
- public class MotoAdapter implements Bike{
- private Moto moto;
- public MotoAdapter(Moto m){
- this.moto = m;
- }
- public void go() {
- moto.go();
- }
- }
- //测试用例
- package designpattern.adapter;
- public class Test {
- public static void main(String[] args){
- Bike b = new LightBike();
- Moto m = new EMoto();
- Student child = new Student();
- child.gotoSchool(b);
- Student universityStudent = new Student();
- universityStudent.gotoSchool(new MotoAdapter(m));
- }
- }