做哪些网站好,做随车吊网站要多大,室内设计学校排名榜国内,动画设计招聘信息意图
将一个类的接口转换成客户希望的另一个接口。Adapter模式使得原本由于接口不兼容而不能在一起工作的那些类可以一起工作。 适配器模式属于结构模式。
类适配器模式#xff08;通过继承的方式实现适配器模式#xff09;
Adapter类#xff0c;通过继承src类#xff0…意图
将一个类的接口转换成客户希望的另一个接口。Adapter模式使得原本由于接口不兼容而不能在一起工作的那些类可以一起工作。 适配器模式属于结构模式。
类适配器模式通过继承的方式实现适配器模式
Adapter类通过继承src类实现dst类接口完成src-dst的适配。
应用实例说明
以生活中充电器的例子来讲解适配器充电器本省相当于Adapter220V交流电相当于src即被适配者我们的dst即目标是5V直流电。 类图
public class Voltage220V{public int output220V(){int src 220;System.out.println(电压 src 伏);return src;}
}public interface IVotage5V {int output5V();
}public class VoltageAdapter extends Voltage220V implement IVoltage5V {Overridepublic int output5V(){int srv output220V();return src/4;}
}public class Phone {//充电public void chargin(IVotage5V ivotage5V){if(ivotage5V.output5V() 5){System.out.printlin(电压为5V可以充电);}else if(iVotage5V.output5V() 5){System.out.println(电压大于5V不能充电);}}
}public class Client{public static void main(String[] args){System.out.println(类适配器模式);Phone phone new Phone();phone.charging(new VoltageAdapter());
}
}类适配器模式优缺点
Java是单继承机制多以类适配器需要继承src类者一点算是一个缺点因为者要求dst必须是接口有一定局限性src类的方法在Adapter中都会暴露出来也增加了使用的成本。由于其继承了src类所以它可以根据需求重写src类的方法使得Adapter的灵活性增强了。
对象适配器模式使用聚合方式来实现适配器模式
基本思路和类的适配器模式相同只是将Adapter类作修改不是继承src类而是持有src类的实例以解决兼容性的问题。即持有src类实现dst类接口完成src-dst的适配根据“合成复用原则”在系统中尽量使用关联关系来代替继承关系。对象适配器模式是适配器模式常用的一种。 类图
public class Voltage220V{public int output220V(){int src 220;System.out.println(电压 src 伏);return src;}
}public interface IVotage5V {int output5V();
}public class VoltageAdapter implement IVoltage5V {private final Voltage220V voltage220V;public VoltageAdapter(Voltage220V voltage220V){this.voltage220V voltage220V;}Overridepublic int output5V(){int srv voltage220V.output220V();return src/4;}
}public class Phone {//充电public void chargin(IVotage5V ivotage5V){if(ivotage5V.output5V() 5){System.out.printlin(电压为5V可以充电);}else if(iVotage5V.output5V() 5){System.out.println(电压大于5V不能充电);}}
}public class Client{public static void main(String[] args){System.out.println(类适配器模式);Phone phone new Phone();phone.charging(new VoltageAdapter());
}
}注 以上示例引用自尚硅谷设计模式教程 https://www.bilibili.com/video/BV1G4411c7N4?p62spm_id_frompageDrivervd_source3141b9fdb12c5901aa70919c50575543