java69-java模式设计之适配器
1需求是
//公司招员工,要求会讲中、英、法、日四国语言,同时还很会编程的员工。
这时候,我们先定义一个接口,实现接口中的方法我们就认为满足
//公司招员工,要求会讲中、英、法、日四国语言,同时还很会编程的员工。
//定义一个接口类,必须五个方法实现
public interface Jobskill {
void speakChinese();//会说中文
void speakEnglish();//会说英文
void speakJapanese();//会说日文
void speakFrench();//会说法语
void goodCoding();//会一些技能
}
好了,满足这个需求你就能来我们公司了,这时候来了一个员工交歌谣,只会中文
//定义一个工人,他会编程和语文
public class Worker {
public void goodCoding(){
System.out.println("我叫歌谣,我编程很厉害的");
}
public void speakChinese(){
System.out.println("我只会说中文呢,能不能请我啊");
}
}
但是这个人编程很厉害,没办法,公司挺想要他的,工资要的也低
直接招聘这个员工,报错了,我天,很显然,这个员工不符合要求,没办法,开个挂把
public class Assist extends Worker implements Jobskill{
public void speakJapanese() {
System.out.println("妈妈再也不用担心我的日语了");
}
public void speakFrench() {
System.out.println("哪里不会就点哪里,这样法语也随便搞定了");
}
public void speakEnglish() {
System.out.println("So Easy.");
}
}
public class WorkerAssit implements Jobskill{
//这个人有自己的助理翻译,这里是使用了组合的方式
private Worker worker;
//在构造方法中传进来
public WorkerAssit(Worker worker){
this.worker = worker;
}
public void goodCoding() {
worker.goodCoding();
}
public void speakChinese() {
//worker会说,直接用worker
worker.speakChinese();
}
public void speakEnglish() {
//英语他不会说,这就要助手出马翻译了
System.out.println("我是他的翻译,他说 Hello World.");
}
public void speakJapanese() {
//日语他也不会说,这还是要助手出马翻译了
System.out.println("我说说日语,谢谢");
}
public void speakFrench() {
//每错,他英语也不行
System.out.println("He can say English too.");
}
}
最后测试
public class Test {
//招聘员工
public static void hireWorker(Jobskill worker){
System.out .println("恭喜你,你被录用了,展示一下你的技能吧");
System.out .println("===============================");
worker.speakChinese();
worker.speakEnglish();
worker.speakFrench();
worker.speakJapanese();
worker.goodCoding();
}
public static void main(String[] args){
//我是个只会说中文的工人 ,但我编程好
Worker me = new Worker();
Assist bbg = new Assist();
hireWorker(bbg);
System.out.println("*****************\r\n");
//这个自带助理的,是使用了组合的方式,是对象的适配模式
WorkerAssit gfs = new WorkerAssit(me);
hireWorker(gfs);
//hireWorker(me);//直接招聘是不行了
// 以上代码为初始状态,后面的代码是后面根据需求增加的
}
}
运行结果
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南