java学习(69):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会说,直接用workerworker.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);//直接招聘是不行了// 以上代码为初始状态,后面的代码是后面根据需求增加的}}

运行结果

本文参考纯属练手,建议学完接口等知识练手,反复练习,有点意思

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/426475.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

selenium 验证码——万能码的使用

使用万能码需要导入一个random类生成随机码 # codingutf-8 import randomver random.randint(1000,9999)print u生成验证码:%d %vernum input(u输入验证码:) print numif num ver:print u登陆成功 elif num 999999:print u登陆成功 else:print u验证…

Intellij IDEA创建的Web项目配置Tomcat并启动Maven项目

点击如图所示的地方,进行添加Tomcat配置页面弹出页面后,按照如图顺序找到,点击号tomcat Service -> Local注意,这里不要选错了哦,还有一个TomEE Service!按照下面图所示进行配置。图中数字的地方代表的配…

java学习(70):GUL图形用户界面初识

import java.awt.*; import javax.swing.*; public class test04 {public static void main(String[] args){//定义一个图形界面JFrame aanew JFrame();//建立一个标题aa.setTitle("歌谣");//创建一个按钮JButton an1new JButton("歌谣");//设置初始位置aa…

oracle实时分析,Oracle Exalytics 大幅提升实时分析洞察力

【天极网OOW2013上海消息】甲骨文近日宣布推出Oracle Exalytics商务智能云服务器的新版本Oracle Exalytics X3-4。新系统显著增强了软件功能和硬件更新,极大提升了针对商务分析的业内最快集成系统的性能。新的Oracle Exalytics X3-4具有2 TB主内存,2.4TB…

java学习(71):GUL边界布局管理器

//面向对象思想,边界管理布局器 import java.awt.*; import javax.swing.*; public class test06 extends JFrame {JButton an1,an2,an3,an4,an5;//把需要的组件定义在这里public static void main(String[] args){test06 lx1new test06();//主函数调用即可}//定义…

java学习(72):GUL流式布局管理器

//面向对象思想,流式管理布局器 import java.awt.*; import javax.swing.*; public class test07 extends JFrame {JButton[] an{null,null,null,null,null,null,null,null};//把需要的组件定义在这里public static void main(String[] args){test07 lx1new test07…

linux日志服务器配置在哪个文件,Linux中日志的基本配置(syslog)

Syslog日志的作用:syslog 日志可以帮我们主动的收集到设备的各种信息,并保存在syslog服务器上,当某些设备出现故障的时候,我们可以省去手动收集信息的麻烦,方便快捷的从syslog服务器中读取设备的各种信息来进行分析排错。linux中日志的类型:(1)info&…

java学习(73):GUL网格布局管理器

//面向对象思想,网格管理布局器 import java.awt.*; import javax.swing.*; public class test08 extends JFrame {JButton[] an{null,null,null,null,null,null,null,null,null};//把需要的组件定义在这里int s9;public static void main(String[] args){test08 l…

linux如何创建备份文件,如何备份Linux 配置文件

如何备份Linux配置文件文件备份是服务器安全最重要的一个环节,下面小编介绍使用Git工具来备份Linux配置文件。一、安装Git[rootlocalhost ~]# yum install git检查Git版本[rootlocalhost ~]# git --versiongit version 1.8.3.1[rootlocalhost ~]#设置初始参数将如下…

20172327 2018-2019-1 《程序设计与数据结构》第八周学习总结

20172327 2018-2019-1 《程序设计与数据结构》第八周学习总结 教材学习内容总结 第十二章 优先队列与堆 堆1.最小堆(minheap):对是一个完全二叉树,其中的每个结点都小于或等于它的两个孩子。2.最大堆(maxheap):对是一个…

java学习(74):GUL面板

//jPanel面板 //面向对象思想,面板,窗口的基础之上再加窗口 import java.awt.*; import javax.swing.*; public class test09 extends JFrame {JPanel mb1,mb2;JButton an1,an2,an3,an4,an5;public static void main(String[] args){test09 lx1new test…

java学习(75):GUL文本框和标签

//jPanel面板 文本框和标签 //面向对象思想,面板,窗口的基础之上再加窗口 import java.awt.*; import javax.swing.*; public class test10 extends JFrame {JPanel mb1,mb2,mb3;JButton an1,an2;JLabel bq1,bq2;//标签JTextField wbk;//文本框JPassword…

linux apr文件解压失败,Apache编译安装提示configure: error: APR not found错误解决方法...

在配置Apache的时候,出现configure: error: APR not found错误原因是缺少一些依赖包,安装这些依赖包就行了下载依赖包,注意我这里下载的与参考链接上的有些不同,安装上也有不一样wget http://archive.apache.org/dist/apr/apr-1.5…

java学习(76):GUL单选按钮和复选按钮

//单选按钮和复选按钮 //面向对象思想,面板,窗口的基础之上再加窗口 import java.awt.*; import javax.swing.*; public class test11 extends JFrame {JPanel mb1,mb2,mb3;JButton an1,an2;JLabel bq1,bq2;//标签JCheckBox fxk1,fxk2,fxk3;//复选框JRad…

uos20专业版是linux哪个版本,WPS Office 2019 for Linux 专业版已与统一操作系统 UOS 完成适配...

统信软件近日发布消息称,办公软件 WPS Office 2019 for Linux 专业版已与统一操作系统 UOS 完成适配工作。对比 2016 版本,2019 版本总体性能有大幅提升。这不仅体现在整体的启动速度上,文字、表格和演示三个组件基础功能的性能同样得到了整体…

java学习(77):GUL下拉菜单框和滚动条

//下拉列表框和滚动条 //面向对象思想,面板,窗口的基础之上再加窗口 import java.awt.*; import javax.swing.*; public class test12 extends JFrame {JPanel mb1,mb2;JLabel bq1,bq2;//标签JComboBox xlk;//JList lb;//列表JScrollPane gd;//滚动publi…

Git 基本命令

1.git安装后设置《用户名》和《邮箱》;查看自身《用户名》和《邮箱》 //设置$ git config --global user.name "yangkang" $ git config --global user.email "kang.yangarvato.com" //查看 $ git config user.name yangkang $ git config user.email kang…

java学习(78):GUL拆分窗口

//拆分窗口 //面向对象思想,面板,窗口的基础之上再加窗口 import java.awt.*; import javax.swing.*; public class test13 extends JFrame {JSplitPane cf;//分成左右两面JList lb;JLabel bq;public static void main(String[] args){test13 lx1new te…

java学习(79):GUL聊天窗口

//聊天窗口 //面向对象思想,面板,窗口的基础之上再加窗口 import java.awt.*; import javax.swing.*; public class test14 extends JFrame {JTextArea wby;JPanel mb;JComboBox xlk;JButton an;JTextField wbk;JScrollPane gd;public static void main…

linux最大权限命令,linux权限管理

8种机械键盘轴体对比本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?chmod命令用来变更文件或目录的权限。在UNIX系统家族里,文件或目录权限的控制分别以读取、写入、执行3种一般权限来区分,另有3种特殊权限可…