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

wordpress runcode高端网站建设seo

wordpress runcode,高端网站建设seo,美点网络公司网站,网站建设销售策划方案访问者模式难以实现#xff0c;且应用该模式可能会导致代码可读性变差#xff0c;可维护性变差#xff0c;除非必要#xff0c;不建议使用#xff1b; 1.访问者模式定义 允许在运行时将一个或多个操作应用于一组对象#xff0c;将操作与对象结构分离#xff1b; 访问者…        访问者模式难以实现且应用该模式可能会导致代码可读性变差可维护性变差除非必要不建议使用 1.访问者模式定义 允许在运行时将一个或多个操作应用于一组对象将操作与对象结构分离 访问者模式主要解决的是数据与算法的耦合问题尤其是在数据结构比较稳定而算法多变的情况下为了不污染数据本身访问者会将多种算法独立归档并在访问数据时根据数据类型自动切换到对应的算法实现数据的自动响应机制并确保算法的自由扩展 1.1 访问者模式优缺点 优点 扩展性好在不修改对象结构中元素的情况下为对象结构中的元素添加新的功能复用性好通过访问者来定义整个对象结构通用的功能从而提高复用程度分离无关行为把相关的行为封装在一起构成一个访问者这样每一个访问者的功能都比较单一 缺点 对象结构变化很困难在访问者模式中没增加一个新的元素类都要在每一个具体访问者类中增加相应的具体操作这违背了开闭原则违反了依赖倒置原则访问者模式依赖了具体类而没有依赖抽象类 1.2 访问者模式的使用场景 当对象的数据结构相对稳定而操作却经常变化的时候。 比如上面例子中路由器本身的内部构造也就是数据结构不会怎么变化但是在不同操作系统下的操作可能会经常变化比如发送数据、接收数据等。需要将数据结构与不常用的操作进行分离的时候。 比如扫描文件内容这个动作通常不是文件常用的操作但是对于文件夹和文件来说和数据结构本身没有太大关系树形结构的遍历操作扫描是一个额外的动作如果给每个文件都添加一个扫描操作会太过于重复这时采用访问者模式是非常合适的能够很好分离文件自身的遍历操作和外部的扫描操作。需要在运行时动态决定使用哪些对象和方法的时候。 比如对于监控系统来说很多时候需要监控运行时的程序状态但大多数时候又无法预知对象编译时的状态和参数这时使用访问者模式就可以动态增加监控行为。 2.访问者模式原理 抽象访问者Visitor可以是接口或抽象类定义了一系列操作方法用来处理所有数据元素通常为同名的访问方法并以数据元素作为入参来确定哪个重载方法被调用具体访问者ConcreteVisitor实现了抽象访问者可以有多个每个访问者都需要实现所有数据元素类型的访问重载发方法抽象元素类Element被访问的数据元素接口定义了一个接受访问者的方法每个元素都要可以被访问者访问具体元素类ConcreteElement具体数据元素实现类提供接受访问方法的具体实现而这个具体的实现通常情况下是使用访问者提供的访问该元素类的方法对象结构类ObjectStructure包含所有可能被访问的数据对象的容器可以提供数据对象的迭代功能可以是任意类型的数据结构客户端使用容器并初始化其中各类数据元素并选择合适的访问者处理容器中的所有数据对象 3.访问者模式的实现 【实例】 以超市购物为例假设超市中的两类商品糖果、酒水进行售卖。我们可以忽略每种商品的计价方法因为最终结账时由收银员统一集中处理在商品类中添加计价方法是不合理的设计 【代码】 访问者接口 public interface Visitor {public void visit(Wine wine); //酒类重载方法public void visit(Candy candy); //糖果重载方法 } 接待者接口 public interface Acceptable {//接收所有的Visitor访问者的子类实现类public void accept(Visitor visitor); } 糖果类酒类类似 public class Candy extends Product implements Acceptable{public Candy(String name, LocalDate producedDate, double price) {super(name, producedDate, price);}Overridepublic void accept(Visitor visitor) {//accept实现方法中调用访问者并将自己 this 传回。this是一个明确的身份,不存在任何泛型visitor.visit(this);} } 具体访问者——折扣计价访问者 public class DiscountVisitor implements Visitor {private LocalDate billDate;public DiscountVisitor(LocalDate billDate) {this.billDate billDate;System.out.println(结算日期: billDate);}Overridepublic void visit(Candy candy) {System.out.println(糖果: candy.getName());//获取产品生产天数long days billDate.toEpochDay() - candy.getProducedDate().toEpochDay();if(days 180){System.out.println(超过半年的糖果,请勿食用!);}else{double rate 0.9;double discountPrice candy.getPrice() * rate;System.out.println(糖果打折后的价格NumberFormat.getCurrencyInstance().format(discountPrice));}}Overridepublic void visit(Wine wine) {System.out.println(酒类: wine.getName(),无折扣价格!);System.out.println(原价: NumberFormat.getCurrencyInstance().format(wine.getPrice()));} } 客户端 public class Client {public static void main(String[] args) {//模拟添加多个商品的操作ListAcceptable products Arrays.asList(new Candy(金丝猴奶糖,LocalDate.of(2022,6,10),10.00),new Wine(衡水老白干,LocalDate.of(2020,6,10),100.00));Visitor visitor new DiscountVisitor(LocalDate.of(2022,10,17));for (Acceptable product : products) {product.accept(visitor);}} }
http://www.hkea.cn/news/14588073/

相关文章:

  • 公司网站建设申请书满天星建设网站
  • 简单网站制作代码做的网站打不开了
  • 电信电信网站备案系统工业设计网站排行榜前十名有哪些
  • 二手东西网站怎么做如何做网站app
  • 青岛做网站的公司建设银行么官方网站
  • 网站建设和网络维护网站建设公司费用
  • 旅游网站的建设的意义百度网站推广费用
  • 子网站如何做单位网站维护 网站建设岗位
  • 北京建设网站公司推荐黄埔网站建设 信科网络
  • 校园网站建设网asp网站建设代码
  • 福建省建设人才市场网站做a免费视频在线观看网站
  • 建站用什么平台好苏州建设交通高等职业技术学校网站
  • 域名备案网站名称中国中小企业官网
  • 电商网站系统建设考试4昌平区网站建设
  • 农产品网站开发背景丰台区的建设网站
  • 福建漳州网站建设公司wordpress typecho 大数据
  • 长沙网站运营外包公司网络推广
  • 重庆哪个网站建设比较好福建鞋子做淘宝图片网站
  • 网络营销策划书的范文面包网站seo
  • 下载站用什么cms深圳市龙华区地图
  • 广西住房城乡建设网站外贸是做什么的工资一般多少
  • 网站建设方案预计效果网站推广多少钱一年
  • 自定义导航网站 源码提供网站建设电话
  • 专门看广告的网站宜宾做网站公司
  • 网站转入备案邯郸网站制作官网
  • 网站页面相似度查询工具广州 网站开发公司
  • 昆明做网站做的好的公司有哪些软文之家
  • 站酷网入口容桂网站建设哪家公司好
  • 湘阴县住房建设局网站网站服务费
  • 广州企业建站摄影网站制作步骤html