Java面向接口程序设计及相关的设计模式

本文深入探讨了Java中的设计模式,特别是简单工厂模式和命令模式的应用。通过实例讲解了如何使用接口、抽象方法及其实现类,展示了设计模式在代码重用和维护中的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

推理题库 侦探推理题和答案 http://tuiliti.cn

推理题库 TuiLiTi.cn

以下内容是我学习李刚老师的《疯狂Java讲义》之后的笔记。

1.接口(抽象的
可以包含默认方法,若只有一个方法称函数型接口。
实现、调用抽象接口需要在该类后implements,并且在类中重写@Override接口中的方法。 抽象接口无法实例化,不能放在等号后面,但可以放在等号前面以指定可以调用的方法。
例如:

interface Produce(){
    int getTime();
}
public class Printer implements Produce{
    @Override
    public int getTime(){
        return 45;
    }
    public static void main(String[] args){
        Produce p = new Printer();
        System.out.println(p.getTime());
    }
}

2.简单工厂设计模式
组成(例):
Output抽象接口(抽象接口中默认方法,也就是非抽象方法,需用defualt修饰)。Printer类,它实现了Output接口。Computer类,它借由Output成员构造,当然这个Output成员由Printer实现,所以Output成员调用的方法过程在Printer类中实现,在Computer类中只是提一下名字。
Computer.(由Printer实现的)Output.各方法();当然这些方法也是由Printer实现的。 工厂OutputFactory实际既可以生产Printer(实际就是Output)也能生产Computer,因为Computer借由Output构造。

Computer c = new Computer(Output o);

工厂设置了getOutput()方法,用于生产(实现了Output的)Printer,它本质也是Output。

public Output getOutput(){
    return new Printer();
}

注意返回的不是Printer而是Output。
生产新Computer的过程:

OutputFactory of = new OutputFactory();  //实例化工厂
Output newOutput = new of.getOutput();   //工厂生产新Printer,本质也是Output
Computer newComputer = new Computer(newOutput);  //生产新Computer

@重要的:
工厂模式使得在后期的维护中,如果我们需要改写输出方法(它们位于Output接口中时是抽象的,在Printer类中被有效的重写),只需要更改Printer类中重写了Output接口的方法就行.

3.命令模式
组成(例):
Command抽象接口,它包含一个process()抽象方法。ProcessArray类,它包含一个exProcess()方法:

public void exProcess(int[] target, Command cmd){
    cmd.process(target);
}

这个exProcess()方法借由Command成员构成。它执行了构成此方法的Command成员下的process()方法。
CommandTest类,用于测试的类,包含main。PrintCommand类,它实现了Command抽象接口并重写了其中的process方法,使其能迭代输出数组。AddCommand类,它实现了Command接口并重写了process方法,使其能累计数组成员。
在CommandTest类中,它们被这样调用:

 public static void main(String[] args){
        ProcessArray pa = new ProcessArray();
        int[] target = new int[]{3, -4, 6, 4};
        pa.exProcess(target, new PrintCommand());
        pa.exProcess(target, new AddCommand());
    }

除Print Add以外,还可以新建各种实现Command接口的方法,在其中部署命令,来以不同方式操作数组。需要更改命令的话,只需要修改这些类就行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值