Java面向接口编程实现方法

文章通过一个电脑连接外设的案例解释了面向接口编程的概念和好处。当电脑需要连接不同类型的设备如键盘、鼠标、投影仪时,最初的做法是为每种设备编写单独的连接方法。然而,通过引入接口(如USB),电脑只需一个通用的连接方法就能适应所有遵循该接口规范的新设备,从而提高了代码的拓展性和设备的可维护性。
摘要由CSDN通过智能技术生成

最近有很多同学来问面向接口编程的好处,那么接下来就用一个案例来给大家说明一下面向接口编程。

案例:有一个电脑类(Computer),电脑除了有基本的开机关机功能外,还有连接任何外接设备的功能,比如能电脑能连接外置键盘(Keyboard),鼠标(Mouse),投影仪(Projecter)等很多外置设备,请用代码来实现该需求。

实现步骤如下:

//  键盘类publicclassKeyboard{publicvoidwork(){System.out.println("外置键盘可以用来输入数据");}}//  鼠标类publicclassMouse{publicvoidwork(){System.out.println("鼠标方便操作人员打开一些程序");}}// 投影仪类publicclassProjecter{publicvoidwork(){System.out.println("投影仪把屏幕投影到墙上放大");}}//  定义笔记本类// 功能: 开机,关机,接收外置设备 键盘 鼠标 投影仪 并让其工作publicclassComputer{//开机publicvoidopenComputer(){System.out.println("笔记本开机");}//关机publicvoidcloseComputer(){System.out.println("笔记本关机");}//连接外置键盘 并让其输入publicvoidconnectKeyboard(Keyboard k){
    k.work();}//连接鼠标 并让其点击publicvoidconnectMouse(Mouse m){
    m.work();}//连接投影仪 并让其投影publicvoidconnectProjecter(Projecter p){
    p.work();}}

首先需要创建三个类Keyboard,Mouse,Projecter即键盘、鼠标、投影仪类,并且都有自己的功能

其次需要创建一个Computer类,类里面有开机(openComputer)方法,也有关机(closeComputer)方法,而且还有三个接收外置设备的方法connectKeyboard,connectMouse,connectProjecter,代码如下:

现在这个需求我们就已经做完了。但是假如此时一些电脑配件的生产商又生产出了一种新设备“U盘”用来做外置存储的,那么这时候我们除了需要再写一个U盘类之外,还需要在Computer类中加一个连接U盘的方法(这体现在现实生活中就是把原来已经制作好的电脑解体重新改装出一个用来连接U盘的口子),增加的代码如下:

//  U盘类publicclassUDisk{publicvoidwork(){System.out.println("U盘可以用来存储数据");}}// 定义笔记本类//  功能: 开机,关机,接收外置设备 键盘 鼠标 投影仪 并让其工作publicclassComputer{//开机publicvoidopenComputer(){System.out.println("笔记本开机");}//关机publicvoidcloseComputer(){System.out.println("笔记本关机");}//连接外置键盘 并让其输入publicvoidconnectKeyboard(Keyboard k){
     k.work();}//连接鼠标 并让其点击publicvoidconnectMouse(Mouse m){
     m.work();}//连接投影仪 并让其投影publicvoidconnectProjecter(Projecter p){
     p.work();}//连接U盘 并让其存储publicvoidconnectUDisk(UDisk u){
     u.work();}}

对于U盘新设备,我们经过改装电脑,可以让电脑连接使用了。但是可恨的是就在此时,电脑配件的生产商又生产出了外置音响,我们快要疯了,因为我们不得不又要把电脑拆了,重新改装出一个连接外置音响的口子。这时候我们并没有着急去改装自己的电脑,因为万一自己改装完了之后电脑配件生产商又生产出了其他的外置设备呢?难道我们就一直改装下去吗?那究竟有没有一种解决办法呢??答案是肯定的,接口的出现很好的解决了这一问题,我们向电脑配件生产商提供了一套规范名叫USB,告诉他们以后再生产任何的设备都要留出USB形状的对接口,那么我们的电脑只需要留出一个USB形状的对接口,用来连接任何具有该形状对接口的设备即可,改进代码如下:

//  定义笔记本类//  功能: 开机,关机,接收任何USB设备publicclassComputer{//开机publicvoidopenComputer(){System.out.println("笔记本开机");}//关机publicvoidcloseComputer(){System.out.println("笔记本关机");}//连接USB设备 并让其进行相应的工作publicvoidconnectUSB(USB device){//父接口的引用可以接收任何的子类对象,多态!
     device.work();//此处运行的是子类的重写后的work方法}}//  自定义的USB接口//  规范  USB设备能运行并完成相应的功能publicinterface USB {publicabstractvoidwork();}// 键盘类publicclassKeyboardimplements USB{publicvoidwork(){System.out.println("外置键盘可以用来输入数据");}}//  鼠标类publicclassMouseimplements USB{publicvoidwork(){System.out.println("鼠标方便操作人员打开一些程序");}}

经过这样的设计,我们的电脑只要留出用来连接USB设备的对接口就可以了,不管生产商们生产任何的外接设备,只要他们按照USB接口规范来,他们都能够接入到电脑上去,这样就极大的增强了电脑的拓展性,以及设备的可维护性。

经过这个案例,大家应该明白面向接口编程给我们带来的便利了吧。面向接口编程就是增强了代码的拓展性,而接口就是体现的一种规范,也是提现的一种拓展思想。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值