Java接口应用

标准

日常生活中常听到接口这一词,最为常见的就是USB接口,利用USB接口可以连接U盘、打印机、MP3等设备

mark

如图所示,计算机应该作为一个类,而计算机上要提供对USB接口标准的支持,这样不管什么设备都可以按USB接口标准执行

如果进行代码开发,先要开发出USB接口标准,有了标准,计算机才可以使用这些标准,设备厂商才可以设计USB设备

定义USB标准

1
2
3
4
5
6
interface USB{
public static final String startInfo = "开始工作!";
public static final String stopInfo = "停止工作!";
public abstract void start();
public abstract void stop();
}

定义计算机类

1
2
3
4
5
6
class Computer{
public void plugin(USB usb) {
usb.start();
usb.stop();
}
}

定义USB设备子类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class Flash implements USB{
public void start() {
System.out.println("Flash "+startInfo);
}
public void stop() {
System.out.println("Flash "+stopInfo);
}
}
class Print implements USB{
public void start() {
System.out.println("Print "+startInfo);
}
public void stop() {
System.out.println("Print "+stopInfo);
}
}
class MP3 implements USB{
public void start() {
System.out.println("MP3 "+startInfo);
}
public void stop() {
System.out.println("MP3 "+stopInfo);
}
}

测试代码

1
2
3
4
5
6
public static void main(String[] args) {
Computer com = new Computer();
com.plugin(new Flash());
com.plugin(new Print());
com.plugin(new MP3());
}

工厂设计模式

工厂设计模式是Java开发中使用最多的一种设计模式
如果想确认一个代码的编写风格是否良好,应该遵循以下两个标准:
客户端调用简单,不需要关注具体细节
程序代码的修改不会影响客户端的使用,即使用者可以不去关心具体细节
根据以上两个标准可知:接口可能会有多个子类,如果代码更换了子类,为了不必每次都修改实例化的接口子类,可以在客户端与接口之间加一个工厂类

Spring开发框架的核心设计理念就是解决关键字new在直接实例化接口上带来的耦合问题

mark

定义接口和子类

1
2
3
4
5
6
7
8
9
10
11
12
13
interface Fruit{
public abstract void eat();
}
public static class orange implements Fruit{
public void eat() {
System.out.println("吃橘子");
}
}
public static class apple implements Fruit{
public void eat() {
System.out.println("吃苹果");
}
}

定义工厂类

1
2
3
4
5
6
7
8
9
10
11
class Factory{
public static Fruit getInstance(String className) {
if("apple".equals(className)) {
return new apple();
}else if ("orange".equals(className)) {
return new orange();
}else {
return null;
}
}
}

测试代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public static void main(String[] args) {
String[] fruits = {"apple", "orange"};
Scanner input = new Scanner(System.in);
while(true) {
System.out.println("选择要吃的水果:苹果(1)橘子(2)不吃了(3)");
int index = input.nextInt();
if(index == 3) {
System.out.println("吃饱了");
input.close();
return;
}
Fruit fruit = Factory.getInstance(fruits[index-1]);
fruit.eat();
}
}

代理设计模式

代理模式也是Java开发中使用较多的一种设计模式
直接上示例

mark

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
interface Network{
public void browse();
}
public static class Real implements Network{
public void browse() {
System.out.println("上网浏览信息");
}
}
public static class Proxy implements Network{
private Network network;
public Proxy(Network network) {
this.network = network;
}
public void check() {
System.out.println("检查用户是否合法,使用代理");
}
public void browse() {
this.check();
this.network.browse();
}
}
public static void main(String[] args) {
Network net = null;
net = new Proxy(new Real());
net.browse();
}

×

纯属好玩

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

文章目录
  1. 1. 标准
    1. 1.1. 定义USB标准
    2. 1.2. 定义计算机类
    3. 1.3. 定义USB设备子类
    4. 1.4. 测试代码
  2. 2. 工厂设计模式
    1. 2.1. 定义接口和子类
    2. 2.2. 定义工厂类
    3. 2.3. 测试代码
  3. 3. 代理设计模式