当前位置: 首页 > news >正文

广州建设企业网站公司wordpress 获得主题

广州建设企业网站公司,wordpress 获得主题,都江堰建设局官方网站,吉利汽车新能源品牌策略模式的定义 策略设计模式是一种行为设计模式。当在处理一个业务时,有多种处理方式,并且需要再运行时决定使哪一种具体实现时,就会使用策略模式。 策略模式的类图: 策略模式的实现 在支付业务中,有三种付款方式&…

策略模式的定义

策略设计模式是一种行为设计模式。当在处理一个业务时,有多种处理方式,并且需要再运行时决定使哪一种具体实现时,就会使用策略模式。

策略模式的类图:
在这里插入图片描述

策略模式的实现

在支付业务中,有三种付款方式,程序运行时使用哪种方式由用户选择,根据用户选择执行不同的逻辑。

  1. 首先,我们需要将支付方式这一行为抽象为一个策略接口,代表支付方式的抽象。
public interface PaymentStrategy {public void payment(BigDecimal amount);}
  1. 然后我们再针对需要支持的三种支付方式建立对应的策略实现类。

银行卡支付策略

public class CreditPaymentStrategy implements PaymentStrategy{@Overridepublic void payment(BigDecimal amount) {System.out.println("使用银行卡支付" + amount);// 去调用网联接口}
}

微信支付策略

public class WechatPaymentStrategy implements PaymentStrategy{@Overridepublic void payment(BigDecimal amount) {System.out.println("使用微信支付" + amount);// 调用微信支付API}
}

支付宝支付策略

public class AlipayPaymentStrategy implements PaymentStrategy {@Overridepublic void payment(BigDecimal amount) {System.out.println("使用支付宝支付" + amount);// 调用支付宝支付API}
}
  1. 然后重新实现我们的支付服务PaymentService。
public class PaymentService {/*** 将strategy作为参数传递给支付服务*/public void payment(PaymentStrategy strategy, BigDecimal amount) {strategy.payment(amount);}
}

我们将支付策略作为参数传递给支付服务,在支付服务中只需要按照运行时传的支付策略对象进行支付就可以了。

我们来测试一下使用策略模式之后的代码。

public class StrategyTest {public static void main(String[] args) {PaymentService paymentService = new PaymentService();// 使用微信支付paymentService.payment(new WechatPaymentStrategy(), new BigDecimal("100"));//使用支付宝支付paymentService.payment(new AlipayPaymentStrategy(), new BigDecimal("100"));}
}

运行结果:

在使用了策略模式之后,在我们的支付服务PaymentService中便不需要写复杂的if…else,如果需要新增加一种支付方式,只需要新增一个新的支付策略实现,这样就满足了开闭原则,并且对其他支付方式的业务逻辑也不会造成影响,扩展性很好。

JDK中使用策略模式的例子

在JDK中最经典的使用策略模式的例子就是Collections.sort(List<T> list, Comparator<? super T> c)方法,这个方法接受一个比较器Compartor参数,客户端在运行时可以传入一个比较器的实现,sort()方法中根据不同实现,按照不同的方式进行排序。

总结:

  • 如果在一个系统里面有许多类,它们仅仅在行为上有区别,那么使用策略模式可以动态地让一个对象在许多行为中选择一种行为;
  • 一个系统需要动态地在几种算法中选择一种;
  • 如果一个对象有很多的行为,如果不用恰当的模式,这些行为就只好使用多重的条件选择语句来实现。
http://www.yayakq.cn/news/302881/

相关文章:

  • 潮州哪里有做网站北京seo分析
  • 网站赚钱吗网站怎么维护
  • 做网页向网站提交数据手机开发者模式在哪里找
  • 主体负责人和网站负责人不能是同一个人福步外贸论坛怎么注册账号
  • 一般网站 广告广州seo优化外包公司
  • 佛山本地网站建设那种自行提取卡密的网站怎么做
  • wap网站源码营销型网站建设的指导原则
  • 遵义网上制作网站建筑网片钢筋网生产厂家
  • wordpress网站开发wordpress免费cms主题
  • 网站建设海淀区手机制作图片的软件免费
  • 电商网站开发 数商云广州网站设计哪家公司好
  • asp.net 窗体网站桔子seo查询
  • 网站关键词设置网站建设素材收集通知
  • 营销型网站建设沈阳做网站需要网页嵌套吗
  • 注册网站要语音验证码的有哪些免费dw设计成品网页
  • 前方网络网站建设合同企业查询
  • 物流企业网站建设步骤济南网站建设小程序
  • 长治哪里能找到做网站的技术员ftp上传文件到网站
  • 麻涌镇网站仿做企业网站如何宣传
  • 简单电子商务网站开发网站颜色设计
  • 招聘网站开发学徒天眼查询个人信息官网
  • 域名到期与网站打不开中国建设银行官方网站下载
  • 收费网站开发盐城快速建设网站找哪家
  • 怎么做网站服务wordpress五列
  • 用电脑做服务器的建一个网站国家工商局官网
  • 北京营销型网站建设公司山西推广型网站开发
  • 哪个网站专注做微信模板公司网站年费怎么做会计分录
  • 做网站的品牌公司有哪些wordpress收费采集
  • 网站开发tt0546网站地图好处
  • 手机上怎么做微电影网站注册网站好的平台