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

深圳网站建设公司建设深圳安卓app开发公司

深圳网站建设公司建设,深圳安卓app开发公司,wordpress文章首页显示,哪些网站是用响应式做的在软件开发过程中#xff0c;设计模式为我们提供了解决常见问题的最佳实践。访问者模式#xff08;Visitor Pattern#xff09;是行为设计模式之一#xff0c;它将数据操作与数据结构分离#xff0c;使得在不修改数据结构的前提下#xff0c;能够定义作用于这些元素的新的…        在软件开发过程中设计模式为我们提供了解决常见问题的最佳实践。访问者模式Visitor Pattern是行为设计模式之一它将数据操作与数据结构分离使得在不修改数据结构的前提下能够定义作用于这些元素的新的操作。本文将详细讲解访问者模式的概念、原理、优缺点并通过Java代码示例展示其在实际项目中的应用。 一、访问者模式的概念 访问者模式是一种将数据操作与数据结构分离的设计模式。它通过将作用于某种数据结构中的各元素的操作封装起来使得这些操作可以独立于数据结构进行变化。访问者模式使得我们能够在不修改数据结构的前提下增加新的操作。 二、访问者模式的结构 访问者模式包含以下几个角色 Visitor访问者接口或抽象类声明了访问者对各个元素的操作方法。ConcreteVisitor具体访问者实现了Visitor接口或抽象类具体实现了对各个元素的操作。Element元素接口或抽象类声明了接受访问者的方法。ConcreteElement具体元素实现了Element接口或抽象类存储数据并实现了接受访问者的方法。ObjectStructure对象结构包含多个元素可以迭代这些元素并允许访问者访问这些元素。 三、访问者模式的原理 访问者模式的原理是将操作从数据结构中分离出来封装到访问者类中。数据结构中的每个元素都接受访问者对象访问者对象通过访问这些元素来执行相应的操作。这样当需要增加新的操作时只需新增一个访问者类而无需修改数据结构。 四、访问者模式的优缺点 优点 增加新的操作很容易只需增加一个新的访问者类而无需修改已有的数据结构。将数据操作集中管理访问者模式将相关的操作集中到一个访问者类中便于管理。分离了数据结构和操作数据结构和操作不再耦合在一起提高了系统的灵活性。 缺点 增加了类的数量每增加一个新的操作都需要增加一个新的访问者类增加了类的数量。破坏了封装访问者需要访问被访问对象的内部结构这在一定程度上破坏了封装性。增加了系统复杂度访问者模式的实现相对复杂需要理解其工作原理才能正确使用。 五、访问者模式的实践 下面通过Java代码示例展示访问者模式在实际项目中的应用。 示例背景 假设我们有一个简单的员工管理系统员工分为两类工程师Engineer和经理Manager。我们需要实现两个操作计算工资CalculateSalary和显示员工信息DisplayInfo。 代码实现 定义Element接口 // 定义Element接口 public interface Element {void accept(Visitor visitor); } 定义具体元素类 // 定义工程师类 public class Engineer implements Element {private String name;private int salary;public Engineer(String name, int salary) {this.name name;this.salary salary;}public String getName() {return name;}public int getSalary() {return salary;}Overridepublic void accept(Visitor visitor) {visitor.visit(this);} }// 定义经理类 public class Manager implements Element {private String name;private int salary;private int bonus;public Manager(String name, int salary, int bonus) {this.name name;this.salary salary;this.bonus bonus;}public String getName() {return name;}public int getSalary() {return salary;}public int getBonus() {return bonus;}Overridepublic void accept(Visitor visitor) {visitor.visit(this);} } 定义Visitor接口 // 定义Visitor接口 public interface Visitor {void visit(Engineer engineer);void visit(Manager manager); } 定义具体访问者类 // 定义计算工资访问者类 public class CalculateSalaryVisitor implements Visitor {Overridepublic void visit(Engineer engineer) {System.out.println(Engineer engineer.getName() salary: engineer.getSalary());}Overridepublic void visit(Manager manager) {int totalSalary manager.getSalary() manager.getBonus();System.out.println(Manager manager.getName() salary: totalSalary);} }// 定义显示信息访问者类 public class DisplayInfoVisitor implements Visitor {Overridepublic void visit(Engineer engineer) {System.out.println(Engineer: engineer.getName());}Overridepublic void visit(Manager manager) {System.out.println(Manager: manager.getName() , Bonus: manager.getBonus());} } 定义ObjectStructure类 import java.util.ArrayList; import java.util.List;// 定义ObjectStructure类 public class ObjectStructure {private ListElement elements new ArrayList();public void addElement(Element element) {elements.add(element);}public void removeElement(Element element) {elements.remove(element);}public void accept(Visitor visitor) {for (Element element : elements) {element.accept(visitor);}} } 客户端代码 public class Client {public static void main(String[] args) {ObjectStructure os new ObjectStructure();os.addElement(new Engineer(John Doe, 70000));os.addElement(new Manager(Jane Smith, 80000, 10000));Visitor calculateSalaryVisitor new CalculateSalaryVisitor();os.accept(calculateSalaryVisitor);System.out.println(------);Visitor displayInfoVisitor new DisplayInfoVisitor();os.accept(displayInfoVisitor);} } 运行结果 Engineer John Doe salary: 70000 Manager Jane Smith salary: 90000 ------ Engineer: John Doe Manager: Jane Smith, Bonus: 10000 总结 访问者模式通过将操作从数据结构中分离出来提高了系统的灵活性和可扩展性。它使得在不修改数据结构的前提下能够增加新的操作。然而访问者模式也增加了类的数量破坏了封装增加了系统的复杂度。因此在实际应用中我们需要根据具体需求权衡利弊选择是否使用访问者模式。 通过上面的示例我们可以看到访问者模式在员工管理系统中的应用通过定义不同的访问者类实现了计算工资和显示员工信息的功能。这使得系统的操作更加灵活易于扩展和维护。希望这篇文章能够帮助大家更好地理解访问者模式并在实际项目中灵活运用。
http://www.w-s-a.com/news/549879/

相关文章:

  • 免费建设网站入驻网站备案不能更新吗
  • 个人网站制作代码西安建筑类公司
  • 网站备案要营业执照吗网站建设如何记账
  • 新手学做网站难吗外包服务商
  • 公司网站建设的项目工作分解结构wordpress插件后端页面
  • 四川省建设人才网站2018南京专业建站
  • ppt制作网站推荐seo教程百度网盘
  • 网站建设多少钱一平米网上商城网站开发报告
  • 福州网站建设招聘信息哈尔滨中企动力科技股份有限公司
  • 军事新闻最新seo关键词查询排名软件
  • 免费网站建设官网项目建设表态发言
  • 平谷建站推广广告投放平台主要有哪些
  • 网站备案掉了什么原因步骤怎么读
  • 徐州市建设监理协会网站做一个公司官网需要多少钱
  • 网站开发学什么数据库做公司网站注意事项
  • 游戏开发网站建设国际战事最新消息
  • 达州+网站建设网站里自己怎么做推广
  • 看网站建设公司的网站案例熊掌号接入wordpress
  • 黄石下陆区建设局网站wordpress如何拖移小工具
  • 宁波网站建设信息网站开发看书
  • 网站建设优化价格北京优化seo排名
  • 微信网站建设公司费用高端网站建设 炫酷
  • 北京网站假设销售找客户最好的app
  • 做外贸需要关注的网站有什么好处宜州设计公司
  • 公司最近想做个网站怎么办陕西科强建设工程有限公司官方网站
  • 生态城门户网站 建设动态it外包收费
  • 网站项目评价老渔哥网站建设公司
  • 哈尔滨寸金网站建设价格178软文网
  • 一个网站建设的成本网站开发过程及要点
  • 监控视频做直播网站中国建筑人才网下载