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

泰州网站开发建设工程协会网站查询系统

泰州网站开发,建设工程协会网站查询系统,苏州seo优化外包公司,工业和信息化网站备案系统访客模式是行为设计模式之一 。 当我们必须对一组相似类型的对象执行操作时#xff0c;将使用访问者模式。 借助访问者模式#xff0c;我们可以将操作逻辑从对象移动到另一个类。 例如#xff0c;假设有一个购物车#xff0c;我们可以在其中添加不同类型的项目#xff08… 访客模式是行为设计模式之一 。 当我们必须对一组相似类型的对象执行操作时将使用访问者模式。 借助访问者模式我们可以将操作逻辑从对象移动到另一个类。 例如假设有一个购物车我们可以在其中添加不同类型的项目元素当我们单击“结帐”按钮时它将计算要支付的总金额。 现在我们可以将计算逻辑包含在项目类中或者可以使用访问者模式将此逻辑移到另一个类中。 让我们在访问者模式示例中实现此功能。 为了实现访客模式首先我们将创建用于购物车的不同类型的项目元素。 ItemElement.java package com.journaldev.design.visitor;public interface ItemElement {public int accept(ShoppingCartVisitor visitor); } 注意accept方法接受Visitor参数我们可以有一些其他特定于项目的方法但为简单起见我不打算讨论太多细节而仅关注于访问者模式。 让我们为不同类型的项目创建一些具体的类。 Book.java package com.journaldev.design.visitor;public class Book implements ItemElement {private int price;private String isbnNumber;public Book(int cost, String isbn){this.pricecost;this.isbnNumberisbn;}public int getPrice() {return price;}public String getIsbnNumber() {return isbnNumber;}Overridepublic int accept(ShoppingCartVisitor visitor) {return visitor.visit(this);}} 水果.java package com.journaldev.design.visitor;public class Fruit implements ItemElement {private int pricePerKg;private int weight;private String name;public Fruit(int priceKg, int wt, String nm){this.pricePerKgpriceKg;this.weightwt;this.name nm;}public int getPricePerKg() {return pricePerKg;}public int getWeight() {return weight;}public String getName(){return this.name;}Overridepublic int accept(ShoppingCartVisitor visitor) {return visitor.visit(this);}} 注意具体类中accept方法的实现它调用Visitor的visit方法并将其自身作为参数传递。 我们在Visitor界面中具有针对不同项目类型的visit方法将由具体的visitor类实现。 ShoppingCartVisitor.java package com.journaldev.design.visitor;public interface ShoppingCartVisitor {int visit(Book book);int visit(Fruit fruit); } 现在我们将实现访客界面并且每个项目都有其自己的逻辑来计算费用。 ShoppingCartVisitorImpl.java package com.journaldev.design.visitor;public class ShoppingCartVisitorImpl implements ShoppingCartVisitor {Overridepublic int visit(Book book) {int cost0;//apply 5$ discount if book price is greater than 50if(book.getPrice() 50){cost book.getPrice()-5;}else cost book.getPrice();System.out.println(Book ISBN::book.getIsbnNumber() cost cost);return cost;}Overridepublic int visit(Fruit fruit) {int cost fruit.getPricePerKg()*fruit.getWeight();System.out.println(fruit.getName() cost cost);return cost;}} 让我们看看如何在客户端应用程序中使用它。 ShoppingCartClient.java package com.journaldev.design.visitor;public class ShoppingCartClient {public static void main(String[] args) {ItemElement[] items new ItemElement[]{new Book(20, 1234),new Book(100, 5678),new Fruit(10, 2, Banana), new Fruit(5, 5, Apple)};int total calculatePrice(items);System.out.println(Total Cost total);}private static int calculatePrice(ItemElement[] items) {ShoppingCartVisitor visitor new ShoppingCartVisitorImpl();int sum0;for(ItemElement item : items){sum sum item.accept(visitor);}return sum;}} 当我们运行上面的程序时我们得到以下输出。 Book ISBN::1234 cost 20 Book ISBN::5678 cost 95 Banana cost 20 Apple cost 25 Total Cost 160 注意如果所有项目中的accept方法的实现都是相同的但是可以有所不同例如可以使用逻辑检查项目是否为空那么根本不要调用visit方法。 访客模式类图 我们的访客模式实现的类图是 这种模式的好处是如果操作的逻辑发生了变化那么我们只需要在访问者实现中进行更改而不必在所有项目类中进行更改。 另一个好处是将新项目添加到系统很容易它将仅需要在访问者界面和实现中进行更改而现有项目类别将不受影响。 访问者模式的缺点在于在设计时我们应该知道visit方法的返回类型否则我们将不得不更改接口及其所有实现。 另一个缺点是如果访问者接口的实现过多则很难扩展。 参考 Java中的访问者设计模式 -JCG合作伙伴 Pankaj Kumar在开发人员食谱博客上的示例教程 。 翻译自: https://www.javacodegeeks.com/2013/08/visitor-design-pattern-in-java-example-tutorial.html
http://wiki.neutronadmin.com/news/317977/

相关文章:

  • 设计师网站pintsetwordpress加音乐
  • 网站建设软文网站和h5
  • 综合电商网站建设需求文档泰安人才招聘信息网
  • 青岛网站制作哪里有wordpress主题 儿童
  • 做网站用啥软件wordpress注美化
  • 返利系统网站开发湖南营销型网站建设企业
  • 网站没被收录什么原因旅游网站设计代码html
  • 网站建设新趋势企业服务账号怎么查询
  • 西安网站建设选任我行网络下载安装app应用
  • 营销型网站建设eyouc长沙营销型网站
  • 网站备案期间如何电子东莞网站建设
  • 电子商务网站建设试题3外贸网站建设多少钱
  • 企业做网站的困惑专业网站制作的公司哪家好
  • 深圳市住房和建设局官网查询阳城seo排名
  • 网站建设前期需要准备什么资料上海 专业网站设计 母婴类
  • 学习做网页的网站设计制作我的汽车
  • 企业网站建设方案怎么写周口城乡建设局网站
  • 网站会员功能人像摄影
  • 动态电商网站怎么做北京朝阳区房价
  • 南充网站建设价格wordpress设置登录背景
  • phpcms 网站 关闭苏州网络公司优化哪家信誉好
  • 网站开发三个月能学会吗网站界面设计如何实现功能美与形式美的统一
  • 网站赚流量护肤品网站建设需求分析
  • 政务网站建设工作的通知网站后台常用密码
  • 网站的内容有哪些内容吗自己网站上做支付宝怎么收费的
  • ps网站头部图片小米商城网站开发文档
  • 免费做网站的网址有哪些wordpress精品
  • 专题文档dede企业网站建设做网站的要到处跑吗
  • 联合易网做网站视频直播网站开发 设计
  • 做网站是什么会计科目房产政策最新消息