内容源自文心一言/网上文摘等,只是记录下来自己的思考和提问,便于自己回顾
什么是面向接口编程?
- 思考:以前单机的时候,考虑功能很简单,能实现就行。例如要支付,可能有多种支付方式。那就写一个支付类,然后里面创建各种各样的支付方法(支付宝、微信等等),但是业务一变,我就又得修改源代码,增加新的方法。但是面向接口就有这好处,利用多态,子类继承父类的方法,然后使用父类来引用子类,具体的实现交给具体的子类(把功能抽象出来,具体怎么实现交给子类)
- 详解:
好的,以下是一个简单的面向接口编程的例子。假设我们要设计一个系统,这个系统可以处理不同的支付方式,比如信用卡支付、支付宝支付等。为了遵循面向接口编程的原则,我们可以首先定义一个支付接口,然后为每种支付方式创建一个实现类。首先,我们定义一个名为Payment的接口:
public interface Payment { void pay(double amount);
}
这个接口定义了一个pay方法,它接受一个金额参数。接下来,我们为每种支付方式创建一个实现类。首先是信用卡支付:public class CreditCardPayment implements Payment { @Override public void pay(double amount) { System.out.println("Paying " + amount + " with credit card."); // 具体的支付逻辑 }
}
然后是支付宝支付:
public class AliPay implements Payment { @Override public void pay(double amount) { System.out.println("Paying " + amount + " with AliPay."); // 具体的支付逻辑 }
}
现在,我们的系统可以很容易地支持新的支付方式,只需要创建一个新的类并实现Payment接口即可。
在主程序中,我们可以这样使用这些支付方式:
public class Main { public static void main(String[] args) { Payment creditCardPayment = new CreditCardPayment(); creditCardPayment.pay(100.0); Payment aliPay = new AliPay(); aliPay.pay(200.0); }
}
这个例子展示了面向接口编程的核心思想:定义接口来抽象功能,然后创建实现这些功能的类。这样做的好处是,当需要添加新的支付方式时,只需要创建一个新的类并实现相应的接口,而不需要修改现有的代码。这大大提高了代码的可扩展性和可维护性。