揭秘什么是面向接口编程

简介:   答案是肯定的,接口的出现很好的解决了这一问题,我们向电脑配件生产商提供了一套规范 名叫USB,告诉他们以后再生产任何的设备都要留出USB形状的对接口,那么我们的电脑只需要留出一个USB形状的对接口,用来连接任何具有该形状对接口的设备即可,改进代码如下:

  先用一个案例来给大家说明一下面向接口编程。

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

  实现步骤如下:

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

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

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

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

  // U盘类public class UDisk{ public void work(){ System.out.println("U盘可以用来存储数据"); }} // 定义笔记本类 // 功能: 开机,关机,接收外置设备 键盘 鼠标 投影仪 并让其工作public class Computer { //开机 public void openComputer(){ System.out.println("笔记本开机"); } //关机 public void closeComputer(){ System.out.println("笔记本关机"); } //连接外置键盘 并让其输入 public void connectKeyboard(Keyboard k){ k.work(); } //连接鼠标 并让其点击 public void connectMouse(Mouse m){ m.work(); } //连接投影仪 并让其投影 public void connectProjecter(Projecter p){ p.work(); } //连接U盘 并让其存储 public void connectUDisk(UDisk u){ u.work(); }}

  对于U盘新设备,我们经过改装电脑,可以让电脑连接使用了。但是可恨的是 就在此时,电脑配件的生产商又生产出了外置音响,我们快要疯了,因为我们不得不又要把电脑拆了,重新改装出一个连接外置音响的口子。这时候我们并没有着急去改装自己的电脑,因为万一自己改装完了之后 电脑配件生产商又生产出了其他的外置设备呢?难道我们就一直改装下去吗?那究竟有没有一种解决办法呢??

  答案是肯定的,接口的出现很好的解决了这一问题,我们向电脑配件生产商提供了一套规范 名叫USB,告诉他们以后再生产任何的设备都要留出USB形状的对接口,那么我们的电脑只需要留出一个USB形状的对接口,用来连接任何具有该形状对接口的设备即可,改进代码如下:

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

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

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

目录
相关文章
|
8月前
|
设计模式 Java
常用设计模式(工厂方法,抽象工厂,责任链,装饰器模式)
有关设计模式的其他常用模式请参考 单例模式的实现 常见的设计模式(模板与方法,观察者模式,策略模式)
76 2
|
2月前
|
设计模式 网络协议 Java
08.装饰者模式设计思想
装饰者模式是一种设计模式,用于在不修改原始类的情况下动态地给对象添加新功能。本文档详细介绍了装饰者模式的基础概念、实现方法、应用场景及优缺点。通过具体的咖啡示例和Java I/O流中的应用,展示了装饰者模式的灵活性和实用性。此外,还探讨了半透明装饰者模式的概念及其在实际开发中的应用。适合初学者和有一定经验的开发者学习。
29 2
|
7月前
|
设计模式 XML Java
【设计模式】第三篇:一篇搞定工厂模式【简单工厂、工厂方法模式、抽象工厂模式】
三 结尾 如果文章中有什么不足,欢迎大家留言交流,感谢朋友们的支持! 如果能帮到你的话,那就来关注我吧!如果您更喜欢微信文章的阅读方式,可以关注我的公众号
70 5
|
设计模式 安全
简谈设计模式——单例设计模式 和 抽象工厂模式
单例设计模式 和 抽象工厂模式 单例模式双重检查锁定public class Singleton5{ private static Singleton5 _instance; private static readonly object SyncObject = new object(); private Singleton5() { } public static...
73 0
|
设计模式
设计模式之抽象工厂和工厂方法的异同点
设计模式之抽象工厂和工厂方法的异同点
|
设计模式 消息中间件 Java
【Java设计模式 面向对象设计思想】三 再谈抽象类和接口
【Java设计模式 面向对象设计思想】三 再谈抽象类和接口
170 0
|
设计模式 Java
Java常用设计模式-简单工厂和抽象工厂模式
Java常用设计模式-简单工厂和抽象工厂模式
|
设计模式
【重温设计模式】——从工厂方法模式看抽象类和接口的区别
【重温设计模式】——从工厂方法模式看抽象类和接口的区别
130 0
|
设计模式 C# iOS开发
【设计模式】C#实现抽象工厂方法模式
抽象工厂方法模式是一种为访问类提供一个创建一组相关或相互依赖对象的接口,且访问类无须指定所要产品的具体类就能得到同族的不同等级的产品的模式结构。(同族的不同等级的产品可以理解为Apple公司的iPhone、iPad、Mac,这里建议大家搜索产品等级和产品族。)
|
设计模式
工厂设计模式、简单工厂设计模式、抽象工厂设计模式(1)
工厂设计模式、简单工厂设计模式、抽象工厂设计模式(1)
153 0
工厂设计模式、简单工厂设计模式、抽象工厂设计模式(1)