多平台统一管理软件接口,如何实现多平台统一管理软件接口
239
2022-08-29
Java设计模式七大原则之开闭原则详解
目录定义案例需求方案一执行结果方案二执行结果对比分析总结
定义
开闭原则( Open Close Principle ),又称为OCP原则,即一个软件实体如类,模块和函数应该对扩展开放,对修改关闭。其中,对扩展开放是针对提供方来说的,对修改关闭是针对调用方来说的。
案例
需求
购买东西的时候,根据支付类型的不同使用不同的方式进行支付,当类型为1时,使用微信支付;当类型为2时,使用支付宝支付
方案一
定义支付类型
/**
* 支付类型
* @author:liyajie
* @createTime:2022/2/7 10:21
* @version:1.0
*/
public class PayType {
int type;
}
定义微信支付类
/**
* 微信支付类
* @author:liyajie
* @createTime:2022/2/7 10:46
* @version:1.0
*/
public class WxPay extends PayType{
WxPay(){
super.type = 1;
}
}
定义支付宝支付类
/**
* 支付宝支付类
* @author:liyajie
* @createTime:2022/2/7 10:46
* @version:1.0
*/
public class ZfbPay extends PayType{
ZfbPay(){
super.type = 2;
}
}
定义支付操作类
/**
* @desc:
* @author:liyajie
* @createTime:2022/2/7 10:41
* @version:1.0
*/
public class Pay {
public void pay(PayType s) {
if (s.type == 1) {
wxPay(s);
} else if (s.type == 2) {
zfbPay(s);
}
}
// 微信支付
public void wxPay(PayType r) {
System.out.println(" 正在微信支付中---支付成功 ");
}
// 支付宝支付
public void zfbPay(PayType r) {
System.out.println(" 正在支付宝支付中---支付成功");
}
}
定义测试类
/**
* 测试类1
* @author:liyajie
* @createTime:2022/2/7 10:48
* @version:1.0
*/
public class Test1 {
public static void main(String[] args) {
new Pay().pay(new WxPay());
new Pay().pay(new ZfbPay());
}
}
执行结果
方案二
定义支付类型基类
/**
* 支付类型基类
* @author:liyajie
* @createTime:2022/2/7 10:21
* @version:1.0
*/
public abstract class PayTypeNew {
int type;
public abstract void pay();
}
定义微信支付类
/**
* 微信支付类
* @author:liyajie
* @createTime:2022/2/7 10:46
* @version:1.0
*/
public class WxPayNew extends PayTypeNew{
WxPayNew(){
super.type = 1;
}
@Override
public void pay() {
System.out.println(" 正在微信支付中---支付成功 ");
}
}
定义支付宝支付类
/**
* 支付宝支付类
* @author:liyajie
* @createTime:2022/2/7 10:46
* @version:1.0
*/
public class ZfbPayNew extends PayTypeNew{
ZfbPayNew(){
super.type = 2;
}
@Override
public void pay() {
System.out.println(" 正在支付宝支付中---支付成功");
}
}
定义支付操作类
/**
* 支付操作类
* @author:liyajie
* @createTime:2022/2/7 10:41
* @version:1.0
*/
public class PayNew {
public void pay(PayTypeNew payTypeNew) {
payTypeNew.pay();
}
}
定义测试类
/**
* 测试类2
* @author:liyajie
* @createTime:2022/2/7 10:48
* @version:1.0
*/
public class Test2 {
public static void main(String[] args) {
new PayNew().pay(new WxPayNew());
new PayNew().pay(new ZfbPayNew());
}
}
执行结果
对比分析
方案一,未遵守开闭原则,耦合较高,如果需求需要扩展,比如再增加一个信用卡支付,那么需要改的地方较大,风险较高
方案二,遵守开闭原则,耦合http://低,扩展方便,并且也提高了代码的复用性,维护起来也很方便
总结
开闭原则是最基础最重要的设计原则,开CdUmKMNW闭原则可以提高复用性和可维护性
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~