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);//直接招聘是不行了
 
 
       // 以上代码为初始状态,后面的代码是后面根据需求增加的
 
 
 
    }
 
}
运行结果

 

posted @   前端导师歌谣  阅读(55)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示