java 设计模式实战,适配器模式之万物拟人化

  • 非常感谢你阅览本文,欢迎【点赞】【⭐保藏】【议论】~
  • 放弃不难,但坚持必定很帅!希望咱们咱们都能每天前进一点点!

什么是适配器办法

以下是百科的https安全问题说明。

在计算机编程中,适配器方HTTP式(有时候也称包装款式或许包装)将一个类的接口适配成用户所等候的。一个适配答应一般由于接口不兼容而不能在一起作业的类作业在一起,做法是将类自己的接口包裹在一个已存在的类中。

共有两类适配器办法:

  • 类适配器办法:

这种适配器办法下,适配器继承自已结束的类(一般多重继承)。

  • 方针适配器办法:

在这种适配器办法中,适配器包容一个它包裹的类的实例。https认证在这种情况下,适配器调用被包裹方针。

规划办法和编程言语无关,可是二当家的依然用Java言语去实战举例。


类的适配器办法

java 规划形式实战,适配器形式之万物拟人化

  • 源(Adajava开发pee)人物:现在需求适配的接口。
  • 方针(Target)人物:这便是所等候得到的接口。留心:由于这儿议论的是类适配器办法,因此方针不行所以类。
  • 适配器(Adaper)人物:适配器类是本办法的中心。适配器把源接口转换成方针接口。明显,这一人物不行所以java语言接口,而有必要是详细类。

源(Adapee)人物

二当家喜欢狗狗,所以养了一只狗狗,他有时候会宣告叫声。

package com.secondgod.adapterHTTP;
/**
* 狗狗
*
* @author 二当家的工商银行白帽子 https://le-yi.blog.csdn.net/
*/
public class Dog {
/**
* 宣告动静
*/
public void makeSound() {
System.out.println("狗狗:汪汪汪。。。。。。");
}
}

方针(Target)人物接口卡

咱们会和朋友谈天说话。

package com.secondgod.adapter;
/**
* 朋友
*
* @author 二当家的白帽子 https://le-yi.blog.csdn.net/
*/
public interface IFriend {
/**
* 说话
*/
voiHTTPd speak();
}

适配器(Adaper)人物

过了一段时间,二当家把狗狗当成了朋友,觉得它不是在叫,而是在说工商银行话。

package com.secondgojava怎样读d.adapter;
/**
* 狗狗朋友
*
* @author 二当家的白帽子 https://le-yi.blog.csdn.net/
*javascript/
public class DogFriend exthttpclientends Dog implements I公积金Friend {
/**
* 说话了
*HTTPS/
@Override
pub接口lic void speak() {
super.makeSound();
}
}

咱们检验一下和狗狗朋友的说话。

package com.secondgod.adapter;
/**
* 人
*
* @author 二当家的白帽子 https://le-yi.blog.csdn.net/
*/
public class Person {
/**
* 和朋友谈天
*
* @param friend
*/
publi工商银行c void speakTo(IFriend friend) {
System.out.println("人:朋友,你干什么呢?");
friend.speak();
}
public static void main(String[] args) {
Persojava模拟器n  person = new Person();
IFriend friend = new DogFriend();
personhttp://192.168.1.1登录.speakTo(friend);
}
}

java 规划形式实战,适配器形式之万物拟人化

二当家的说一句,狗狗叫一声,咱们真的像是在谈天。


添加源(Adapee)人物的结果

有一天,二当家的又养了一只猫猫。

package com.secondgo工商银行d.adapter;
/**
* 猫猫
*
* @author 二当家的白帽子 https://le-yjava难学吗i.blog.csdn.net/
*/
public class Cat {
/**
* 宣告动静
*/
public void makeSound() {
System.oHTTPut.println("猫猫:喵喵喵。。。。。。");
}
}

过了几天,二当家的和猫猫也成了朋友。这时候只好再多添加一个猫朋友类。

package com.secondHTTPSgod.adaptjava模拟器er;
/**
* 猫猫朋友
*
* @author 二当家的白帽子 https://le-yi.blog.csdn.net/
*/
public class CatFriend extends Cat implements IFriend {
/**
* 说话了
*/
@Overr接口自动化ide
public void speak() {
sujava环境变量配置per.makeSound();
}
}

二当家的和狗朋友,猫朋友谈天。

p枸杞ackage com.secondgHTTPSod.adapter;
/**
* 人龚俊
*
* @author 二当家的白帽子 https宫颈癌://le-yi.blog.csdn.net/
*/
public class Person {
/**
* 和朋友谈天
*
* @param friend
*/
public void speakhttp://www.baidu.comTo(IFriend friend) {
System.out.println("人:朋友,你干http://192.168.1.1登录什么呢?");
friend.speak();
}
publi公积金c static void main(String[] args) {
Person  person = new Person();
IFriend dogF枸杞riend = new DogFriend();
I狗狗币Friend catFriend = nejava开发w CatFriend();
pe接口卡rson.speakTo(dogFrhttp 302ienjava面试题d);
person.speakTo(catFriend);
}
}

java 规划形式实战,适配器形式之万物拟人化

往后要是二当家的再有其他动物朋友,就需求再去添加适配器类。有没有办法通用一点呢?


方针的适配器办法

二当家的希望能够有一个和各种动物做朋友的方http 500法,而不是每次有了新的动HTTPS物朋接口和抽象类的差异友都需求添加一个适配器。

java 规划形式实战,适配器形式之万物拟人化


添加一个动物接口

package com.secondgod.adapter;
/**
* 动物
*
* @author 二当家的白帽httpwatch子 https://le-yi.接口类型blog工商银行客服电话.csdn.net/
*java模拟器/
pubhttp://192.168.1.1登录lic interface IAnimal {
/**
* 宣告动静
*/
void makeSound();
}

让源(Adapee)人物的猫猫和狗狗结束动物接口

package com.seco接口卡ndgod.adapter;
/**
* 狗狗
*
* @auhttp 500thor 二当家的白帽子 https:http代理//le-yi.blog.csdn.net/工商银行
*/
public class Dog implements IAnimal {
/**
* 宣告动静
*/
public void makeSound() {
System.out.println("狗狗:汪汪汪。。。。。。");
}
}
package com.secondgod.adapt接口无权限er;
/**
* 猫猫
*
* @author 二当家的白帽子 https://le-yi.bjava开发log.csdn.nethttp 302/
*/
public class Cat implements IAnimal {
/**
* 宣告动静
*/
public void makeSjava就业培训班ound() {
System.out.println("猫猫:喵喵喵。。。。。。");
}
}

万物拟人适配器(Adaper)人物

package com.secondgod.googleadapter;
/**
* 万物拟人适配器
*
* @author 二当家的白帽子 https://le-yi工商银行.blog.http://192.168.1.1登录csdn.net/
*/
public class AnimalFriendAdaperjava开发 implements IFriend {
/**
* 被拟人化的动物朋友
*/
p接口无权限是什么意思rivahttp 404te IAnimal animal;
public AnimalFriendAdaper(IAnimal animal) {
this.animal = animal;
}
@Override
public void speak() {
animal.makeSound();
}
}

检验咱们的万物拟人适配器。

package com.secondgod.adapter;
/**
* 人
*
* @author 二当家的白帽子 https://le-yi.blog接口无权限.csdn.net/
*/
public class Person {
/**
* 和朋友谈天
*
* @param friend
*/
public void speakTo(IFriendHTTPS friend) {
System.out.println("人:朋友,你干什么呢?");
friend.speak();
}
publhttps和http的差异ic static void main(String[] args) {
// 一个人
Person  person = new Person();
// 一只狗
IAnimal dog =宫颈癌 new Dog();
// 一只猫
IAnimal cat = new Cat();
// 万物拟人
person.speakTo(new AnimalFriendAdaper(dog));
person.speakTo(new AnimalFriendAdaper(cat));
}
}枸杞

java 规划形式实战,适配器形式之万物拟人化

太好了。和动物做朋友轻松多了。由于有了万物拟人的适配器。


缺省适配办法

java 规划形式实战,适配器形式之万物拟人化


方针(Target)人物添加行为声明

有一天,朋友的规范变了。有必要得会码砖才行。

package com.secondgod.adapter;
/**
* 朋友
*
* @author 二当家的白帽子 https://le-yi.blog.csdn.net/
*/
public interface IFriend {
/**
* 说话
*/
void speak();
/**
* 码起来
*/
void coding();公积金
}

适配器(Adaper)人物有必要跟着添加行为结束

修改后的万物拟人适配器

package com.secondgod.adapter;
/**
* 万物拟人适http 404配器
*
* @author 二当家的白帽子 https://le-yi.blog接口和抽象类的差异.csdn.n工商银行客服电话et/
*/
publ接口测验ic class AnimalFriendAdaper implements IFriend {
/**
* 被拟人化的动物朋友
*/
private IAnimal animal;
public AnimalFriendAdaper(IAnimal animal) {
this.animal = animal;
}
@Override
public void speak() {
animal.makeS狗狗币ound();
}
@Override
public void coding() {
System.out.println("动物:笑而不语摇摇头。。。。。。");
}
}

缺省适配器

二当家的想和动物做朋友,可是不想去考虑他们怎样码砖,往后二当家的要是宫崎骏和植物做朋友,还得为植物朋友也结束码砖行为,接口类型烦哦。所以咱们来个默许空结束。

package com.secondgod.adaphttp 404ter;
/**
* 缺省适配器
*
* @ahttps安全问题uthor 二当家的白帽子 https://le-yi.blog.csdn.net/
*/
public abstract class FriendAdaper implements IFriend {
@Override
public voihttps和http的差异d spehttps和http的差异ak() {
}
@Ovhttp://www.baidu.comerride
public void接口类型 coding() {
}
}
package com.secondgod.adapter;
/**
* 万物拟人适配器
*
* @author 二当家的白帽子 https://le-yi.blog.csdn.net/
*/https安全问题
public class AnimalFriendAda龚俊per extends FriendAdaper {
/**
* 被拟人化的动物朋友
*/
private IAnimal animal;
public AnimalFriendAdaper(IAnimal an接口自动化imal) {
this.animal =http://www.baidu.com animahttps域名l;
}
@Override
public void speak() {
animal.makeSound();
}
}

由于多了一个默许结束,咱们就不需求为万物适配器结束码砖行为了。

适配器办法的目的是要改动源的接口,以便于方针接口相容。缺省适配的目的稍有不同,它是http://www.baidu.com为了便利建立一个不一般的HTTPS适配器类而供应的一种一般结束。

在任何时候,假设不准备结束一个接口的全部办法时,就能够运用“缺省适配办法”制作一个抽象类,给出全部办法的一般的详细结束。这样,从这个抽象类再继承下去的子类就不用结束全部的办法了。


发表评论

提供最优质的资源集合

立即查看 了解详情