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

杭州网站公司哪家服务好wordpress模板怎么改织梦

杭州网站公司哪家服务好,wordpress模板怎么改织梦,seo排名查询工具,h5制作成品访问者模式是用于访问复杂数据结构的元素#xff0c;对不同的元素执行不同的操作。策略模式是对于具有多种实现的算法#xff0c;在运行过程中可动态选择使用哪种具体的实现。状态模式是用于具有不同状态的对象#xff0c;状态之间可以转换#xff0c;且不同状态下对象的行… 访问者模式是用于访问复杂数据结构的元素对不同的元素执行不同的操作。策略模式是对于具有多种实现的算法在运行过程中可动态选择使用哪种具体的实现。状态模式是用于具有不同状态的对象状态之间可以转换且不同状态下对象的行为不同客户端可以不必考虑其状态及转换对所有的状态都可以执行同一的操作。 1 访问者模式 需求需要对一个复杂数据结构进行操作根据其不同的元素类型执行不同的操作。 1.1 访问者模式介绍 将数据结构与数据操作分离通过定义一个访问者对象来实现对数据结构中各个元素的访问和处理从而达到解耦和灵活操作的目的。 图 访问者模式 UML 1.1.1 双分派 Java 是一种支持双分派的单分派语言。 单分派 调用哪个对象多态的方法在运行期确定调用对象的哪个方法在编译期确定。 双分派 调用哪个对象多态的方法在运行期确定调用对象的哪个方法在运行期确定。 图 单分派与双分派 访问者模式中的元素对象中的accept方法就是双分派。 public class VisitorPattern {public static void main(String[] args) {Element[] elements {new MobilePhone(),new Ipad(),new Computer()};Visitor[] visitors {new Student(),new Programmer()};for (Visitor visitor : visitors) {for (Element element : elements) {element.accept(visitor);}}}private interface Element {void accept(Visitor visitor);}private static class MobilePhone implements Element{Overridepublic void accept(Visitor visitor) {visitor.visit(this);}public void makeCall() {System.out.println(打电话);}public void wechat() {System.out.println(微信聊天);}public void playGame() {System.out.println(玩王者荣耀);}}private static class Ipad implements Element {Overridepublic void accept(Visitor visitor) {visitor.visit(this);}public void watchTv() {System.out.println(刷剧);}public void playGame() {System.out.println(玩王者荣耀,大屏更爽);}}private static class Computer implements Element {Overridepublic void accept(Visitor visitor) {visitor.visit(this);}public void playGame() {System.out.println(玩电脑游戏使命召唤);}public void work() {System.out.println(用于工作);}}private interface Visitor {void visit(MobilePhone mobilePhone);void visit(Ipad ipad);void visit(Computer computer);}private static class Programmer implements Visitor {Overridepublic void visit(MobilePhone mobilePhone) {mobilePhone.makeCall();}Overridepublic void visit(Ipad ipad) {ipad.playGame();}Overridepublic void visit(Computer computer) {computer.work();}}private static class Student implements Visitor {Overridepublic void visit(MobilePhone mobilePhone) {mobilePhone.wechat();}Overridepublic void visit(Ipad ipad) {ipad.watchTv();}Overridepublic void visit(Computer computer) {computer.playGame();}}} 1.2 优缺点 优点 将数据结构与数据操作分离当需要添加新的操作时只添加新的子类即可符合开闭原则。将对元素的操作集中到一个类中而不是分散在元素的子类中使得职责更加明确代码更加清晰符合单一职责原则。 缺点 不适合结构不稳定的数据结构当新增或删除元素时需要修改访问者类不符合开闭原则。如果访问者需要访问元素的内部信息可能会破坏封装性。 2 策略模式 需求一个算法有多种实现方式或一个对象有很多的行为这些行为需要使用多重条件选择语句来实现。期望把这些行为转移到具体的策略类中避免使用难以维护的多重语句。 2.1 策略模式介绍 定义一个算法接口然后将其不同的实现封装到具体的策略类中并让它们可以相互替换。 图 策略模式 UML public class StrategyPattern {public static void main(String[] args) {SortAlgorithm[] sortAlgorithms {new BubbleSortAlgorithm(),new SelectionSortAlgorithm()};Integer[][] array {{34,23,2,4,6,44,11,53,221,123},{3,66,27,212,45,565,11,44,33,12,465,55,22,14,56}};for (SortAlgorithm sortAlgorithm : sortAlgorithms) {for (Integer[] arr : array) {sortAlgorithm.sort(arr);}System.out.println();}}private static abstract class SortAlgorithm {public void sort(Integer[] array) { // 升序if (array ! null array.length 1) {array Arrays.copyOf(array,array.length);opera(array);System.out.println(Arrays.asList(array));}}protected abstract void opera(Integer[] array);}/*** 冒泡排序*/private static class BubbleSortAlgorithm extends SortAlgorithm{Overrideprotected void opera(Integer[] array) {for (int i 0; i array.length; i) {for (int j i 1; j array.length; j) {if (array[i] array[j]) {int temp array[j];array[j] array[i];array[i] temp;}}}}}/*** 选择排序*/private static class SelectionSortAlgorithm extends SortAlgorithm {Overrideprotected void opera(Integer[] array) {for (int i 0; i array.length; i) {int minPos i;for (int j i1; j array.length; j) {if (array[minPos] array[j]) {minPos j;}}int temp array[i];array[i] array[minPos];array[minPos] temp;}}}} 2.2 优缺点 优点 符合开闭原则增加新的算法或行为时只需要添加子类即可。避免了多重条件选择语句。 缺点 客户端必须知道所有的策略类并自行决定使用哪个策略类。会增加类的数量。 3 状态模式 需求系统中某个对象存在多个状态这些状态之间可以进行转换且对象在不同状态下的行为不同。 3.1 状态模式介绍 将一个对象的状态从该对象中分离出来封装到专门的状态类中。对于客户端而言无须关心对象的状态及转换无论对象处于哪种状态客户端都可以一致性地处理。 图 状态模式 UML public class StatePattern {public static void main(String[] args) {BackCard backCard new BackCard();backCard.save(100);backCard.withdraw(1000);backCard.withdraw(600);backCard.withdraw(400);backCard.withdraw(100);}private static class BackCard {private final static State[] stateList {new NormalState(),new Overdraft(),new LimitState()};private State state stateList[0];private double balance 0;public double getBalance() {return balance;}public void setBalance(double balance) {this.balance balance;}public void save(double money) {System.out.println(存钱操作: money);this.balance money;changeState();}public void withdraw(double money) {System.out.println(取钱操作: money);try {state.withdraw(this,money);} catch (RuntimeException e) {System.out.println(取钱失败: e.getMessage());}changeState();}private void changeState() {System.out.println(-----余额 balance -----);if (balance 0) state stateList[0];else if (balance -1000) state stateList[1];else state stateList[2];}}private interface State {void withdraw(BackCard backCard,double money);}private static class NormalState implements State {Overridepublic void withdraw(BackCard backCard,double money) {backCard.setBalance(backCard.getBalance() - money);}}private static class Overdraft implements State {Overridepublic void withdraw(BackCard backCard,double money) {if (money 500) {throw new RuntimeException(卡被透支取钱不能超过500元);}backCard.setBalance(backCard.getBalance() - money);}}private static class LimitState implements State {Overridepublic void withdraw(BackCard backCard,double money) {throw new RuntimeException(卡被限制不能取钱);}}} 3.2 优缺点 优点 客户端可以不必关心对象的状态及转换对所有状态都可进行同一操作。将与具体状态相关的行为都封装在一个类中符合单一职责原则更容易扩展及维护。 缺点 状态转换无论是在环境类还是状态类中当增加新的状态或修改转换逻辑时都需要修改转换代码不符合开闭原则。增加了类的个数。
http://www.w-s-a.com/news/443819/

相关文章:

  • 在招聘网站里做电话销售免费空间可以上传网站吗
  • 梅州建站怎么做中国建设银行官网下载
  • 网站静态化设计广州网站备案方案
  • 西安网络技术有限公司网站扬中网站建设方案
  • 青海省教育厅门户网站wordpress core
  • idc科技公司网站模板蜜雪冰城网络营销案例分析
  • 微信与网站对接手机软件怎么做
  • 户县网站建设珠海专业制作网站
  • 麦当劳的网站优化建议猎头公司工作怎么样
  • 合肥地区网站制作网页浏览器打不开
  • 做网站的不给ftp网站如何做触屏滑动
  • wordpress statraq重庆百度优化
  • 企业网站官网英文WordPress站点切换为中文
  • 服装公司网站定位一点号自媒体平台
  • 密云微网站建设汽车之家手机官网首页
  • 多语言外贸网站制作苏州建设网站微信公众号
  • 用wordpress建站学什么百度给企业做网站吗
  • 福建城乡建设网站做数码测评的网站
  • 东海县建设局网站wordpress 好用的主题
  • 网站图片设计制作制作一个门户网站需要多少钱
  • 虚拟币交易网站源码自己给网站做支付接口
  • 免费的seo网站在线 crm
  • 绍兴市高速公路建设指挥部网站网站主页和子页风格如何统一
  • 获取网站状态网站租金可以做办公费吗
  • 网站开发执行什么标准号wordpress主题 表白
  • 杭州网站推广与优化凡科网是免费的吗
  • 公司网站的重要性门户网站推广介绍方案
  • 做金融网站看那些素材江门网红打卡景点蓬江区
  • 饮食网站模板建网站中企动力优
  • 郑州 制造 网站东平企业建站公司