鸿蒙初开,开天辟地
接口的作用
面向对象编程中,接口主要用于设计和组织代码,使代码更加容易拓展和维护,这里举一个小DEMO作为例子,如商城订单支付接口,假设最开始我们这里使用了支付宝支付
class Order{
private totalPrice:number;
constructor(totalPrice:number){
this.totalPrice = totalPrice;
}
public payForIt(){
console.log(`使用了支付宝付款了:${this.totalPrice}`);
}
}
假如,未来这个系统的支付订单需要支持其他的支付方式,我们为了支持新的支付方式如PayPal和微信支付等其他的支付方式,我们就需要声明其他的方法来支付了,或者是修改原有的代码
这就不符合我们开发应用的OCP开闭原则了,正常运行且功能良好的代码是不可以动的
因此,我们应当引入接口,让这个订单的模块使用接口实现类的具体方法
interface Payment{
pay(price:number):void;
}
改用接口的方法
class Order{
private totalPrice:number;
private payWay:Payment;
constructor(totalPrice:number,payWay:Payment){
this.totalPrice = totalPrice;
this.payWay = payWay;
}
public payForIt(){
this.payWay.pay(300);
}
}
interface Payment{
pay(price:number):void;
}
这里我们再给他两个实现类,一个是微信支付,一个是支付宝支付
class AliPay implements Payment{
public pay(price:number):void{
console.log(`支付宝支付${price}`);
}
}
class WeChatPay implements Payment{
public pay(price:number):void{
console.log(`微信支付${price}`);
}
}
两个实现类
接下来,我们就可以使用实现类的方法实现我们需要的具体功能了
class Order{
private totalPrice:number;
private payWay:Payment;
constructor(totalPrice:number,payWay:Payment){
this.totalPrice = totalPrice;
this.payWay = payWay;
}
public payForIt(){
this.payWay.pay(300);
}
}
interface Payment{
pay(price:number):void;
}
class AliPay implements Payment{
public pay(price:number):void{
console.log(`支付宝支付${price}`);
}
}
class WeChatPay implements Payment{
public pay(price:number):void{
console.log(`微信支付${price}`);
}
}
let order:Order = new Order(1000,new WeChatPay);
order.payForIt();
使用实现类的方法
结果如下
检查输出结果,事实证明,我们想要的效果已经实现了,最后它调用了实现类的方法,完成了解耦合,如果我们需要支付宝支付,就只需要修改对应的实现类就可以了,以上这个DEMO,就是接口在实际开发中主要的应用,实现了我们的多态和解耦合需求