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

电子商务网站设计物流方案做国内第一游戏数据门户网站

电子商务网站设计物流方案,做国内第一游戏数据门户网站,中式风格装修效果图,源码编辑器策略设计模式是行为设计模式之一。当我们为特定任务使用多个算法时#xff0c;使用策略模式#xff0c;客户端决定在运行时使用的实际实现。策略模式的最佳示例之一是Collections.sort()采用Comparator参数的方法。基于Comparator接口的不同实现#xff0c;对象将以不同的方…策略设计模式是行为设计模式之一。当我们为特定任务使用多个算法时使用策略模式客户端决定在运行时使用的实际实现。策略模式的最佳示例之一是Collections.sort()采用Comparator参数的方法。基于Comparator接口的不同实现对象将以不同的方式进行排序。2|0实例对于我们的示例我们将尝试实施一个简单的购物车我们有两种付款策略 - 使用信用卡或使用PayPal。首先我们将为我们的策略模式示例创建接口在我们的例子中支付金额作为参数传递。支付方式PaymentStrategy.javapackage com.journaldev.design.strategy;public interface PaymentStrategy {public void pay(int amount);}现在我们将不得不使用信用卡/借记卡或通过PayPal为支付创建具体的算法实现。信用卡付款CreditCardStrategy.javapackage com.journaldev.design.strategy;public class CreditCardStrategy implements PaymentStrategy {private String name;private String cardNumber;private String cvv;private String dateOfExpiry;public CreditCardStrategy(String nm, String ccNum, String cvv, String expiryDate){this.namenm;this.cardNumberccNum;this.cvvcvv;this.dateOfExpiryexpiryDate;}Overridepublic void pay(int amount) {System.out.println(amount paid with credit/debit card);}}Paypal付款PaypalStrategy.javapackage com.journaldev.design.strategy;public class PaypalStrategy implements PaymentStrategy {private String emailId;private String password;public PaypalStrategy(String email, String pwd){this.emailIdemail;this.passwordpwd;}Overridepublic void pay(int amount) {System.out.println(amount paid using Paypal.);}}现在我们的策略模式示例算法准备好了。我们可以实施购物车和付款方式将需要输入作为付款策略。package com.journaldev.design.strategy;public class Item {private String upcCode;private int price;public Item(String upc, int cost){this.upcCodeupc;this.pricecost;}public String getUpcCode() {return upcCode;}public int getPrice() {return price;}}ShoppingCart.javapackage com.journaldev.design.strategy;import java.text.DecimalFormat;import java.util.ArrayList;import java.util.List;public class ShoppingCart {//List of itemsList items;public ShoppingCart(){this.itemsnew ArrayList();}public void addItem(Item item){this.items.add(item);}public void removeItem(Item item){this.items.remove(item);}public int calculateTotal(){int sum 0;for(Item item : items){sum item.getPrice();}return sum;}public void pay(PaymentStrategy paymentMethod){int amount calculateTotal();paymentMethod.pay(amount);}}请注意购物车的付款方式需要付款算法作为参数并且不会将其作为实例变量存储在任何位置。让我们用一个简单的程序测试我们的策略模式示例设置。ShoppingCartTest.javapackage com.journaldev.design.strategy;public class ShoppingCartTest {public static void main(String[] args) {ShoppingCart cart new ShoppingCart();Item item1 new Item(1234,10);Item item2 new Item(5678,40);cart.addItem(item1);cart.addItem(item2);//pay by paypalcart.pay(new PaypalStrategy(myemailexample.com, mypwd));//pay by credit cardcart.pay(new CreditCardStrategy(Pankaj Kumar, 1234567890123456, 786, 12/15));}}上述程序的输出是50 paid using Paypal.50 paid with credit/debit card3|0类图4|0总结我们可以使用组合为策略创建实例变量但我们应该避免这种情况因为我们希望将特定策略应用于特定任务。在Collections.sort()和Arrays.sort()方法中遵循相同的方法将比较器作为参数。策略模式与状态模式(State Pattern)非常相似。其中一个区别是Context包含状态作为实例变量并且可以有多个任务其实现可以依赖于状态而策略模式策略作为参数传递给方法上下文对象没有任何变量来存储它。当我们为特定任务提供多个算法时策略模式很有用我们希望我们的应用程序可以灵活地在运行时为特定任务选择任何算法。优点1、算法可以自由切换。 2、避免使用多重条件判断。 3、扩展性良好。缺点1、策略类会增多。 2、所有策略类都需要对外暴露。主要解决在有多种算法相似的情况下使用 if...else 所带来的复杂和难以维护。何时使用一个系统有许多许多类而区分它们的只是他们直接的行为。如何解决将这些算法封装成一个一个的类任意地替换。关键代码实现同一个接口。使用场景 1、如果在一个系统里面有许多类它们之间的区别仅在于它们的行为那么使用策略模式可以动态地让一个对象在许多行为中选择一种行为。 2、一个系统需要动态地在几种算法中选择一种。 3、如果一个对象有很多的行为如果不用恰当的模式这些行为就只好使用多重的条件选择语句来实现。注意事项如果一个系统的策略多于四个就需要考虑使用混合模式解决策略类膨胀的问题。这就是java中的Strategy Pattern我希望你喜欢它。翻译于strategy-design-pattern-in-java__EOF__
http://www.pierceye.com/news/174002/

相关文章:

  • WordPress站群更新wordpress 图片命名吗
  • 网站建设最好的公司哪家好网站模板下载软件
  • 运输公司网站模板网站建设及使用
  • 哈尔滨cms模板建站网站建设天地心
  • 廊坊代运营公司广东网站se0优化公司
  • 西双版纳建设厅网站宁夏建网站报价
  • 网站优化分析软件手机端网站源码
  • 我想克隆个网站 怎么做网站 运营工作如何做
  • 承德网站制作公司哪家好如何选择邯郸网站建设
  • 网络分析的应用案例广东网络seo推广平台
  • 网站开发设计合同北京网站排名优化公司
  • 免费建立个人网站凡科怎么下载app
  • 网站题头是什么做线上网站需要钱吗
  • 陕西省建设工程监理协会网站 查询动易网站首页错位
  • 老公做网站网站推广wordpress 文件加载顺序
  • 网站开发保存学习进度的方案搭建网站免费
  • 做网站对外贸有什么用网站怎么防k
  • 网站开发网站建设常州建站程序
  • 赤峰建设局网站物流公司网站制作模板
  • 装修第三方平台网站建设网站开发及设计
  • 男女做那个的小视频网站个人如何注册公司流程
  • 机关网站建设前期准备工作wordpress替代
  • 机关网站建设无锡宜兴网站建设
  • 江苏景禾瑜博建设工程有限公司网站做网站注册公司
  • 如何找到做网站的客户贵州二建报名入口官网
  • 网站怎么做301定向wordpress极客式主题
  • 造价工程建设协会网站怎么把做的网站发布
  • 万网网站首页好企业网站
  • 廊坊做网站电话企业网络搭建拓扑图
  • 建设社区网站有什么借鉴之处专业网站制作哪家专业