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

佛山cms模板建站深圳 赢客创想网络技术股份有限公司 网站建设

佛山cms模板建站,深圳 赢客创想网络技术股份有限公司 网站建设,安卓手机建站,帝国和WordPress比较Composite定义#xff1a;将对象以树形结构组织起来#xff0c;以达成“部分#xff0d;整体” 的层次结构#xff0c;使得客户端对单个对象和组合对象的使用具有一致性。Composite比较容易理解#xff0c;想到Composite就应该想到树形结构图。组合体内这些对象都有共同接…Composite定义将对象以树形结构组织起来以达成“部分整体” 的层次结构使得客户端对单个对象和组合对象的使用具有一致性。Composite比较容易理解想到Composite就应该想到树形结构图。组合体内这些对象都有共同接口当组合体一个对象的方法被调用执行时Composite将遍历(Iterator)整个树形结构寻找同样包含这个方法的对象并实现调用执行。可以用牵一动百来形容。所以Composite模式使用到Iterator模式和Chain of Responsibility模式类似。Composite好处 使客户端调用简单客户端可以一致的使用组合结构或其中单个对象用户就不必关系自己处理的是单个对象还是整个组合结构这就简化了客户端代码。更容易在组合体内加入对象部件。客户端不必因为加入了新的对象部件而更改代码。如何使用Composite 首先定义一个接口或抽象类这是设计模式通用方式了其他设计模式对接口内部定义限制不多Composite却有个规定那就是要在接口内部定义一个用于访问和管理Composite组合体的对象们或称部件Component。下面的代码是以抽象类定义一般尽量用接口interface。 public abstract class Equipment{private String name;//网络价格public abstract double netPrice();//折扣价格public abstract double discountPrice();//增加部件方法  public boolean add(Equipment equipment) { return false; }//删除部件方法public boolean remove(Equipment equipment) { return false; }//注意这里这里就提供一种用于访问组合体类的部件方法。public Iterator iter() { return null; }public Equipment(final String name) { this.namename; } } 抽象类Equipment就是Component定义代表着组合体类的对象们,Equipment中定义几个共同的方法。 public class Disk extends Equipment{public Disk(String name) { super(name); }//定义Disk网络价格为1public double netPrice() { return 1.; }//定义了disk折扣价格是0.5 对折。public double discountPrice() { return .5; } } Disk是组合体内的一个对象或称一个部件这个部件是个单独元素( Primitive)。 还有一种可能是一个部件也是一个组合体就是说这个部件下面还有儿子这是树形结构中通常的情况应该比较容易理解。现在我们先要定义这个组合体 abstract class CompositeEquipment extends Equipment{private int i0;//定义一个Vector 用来存放儿子private Lsit equipmentnew ArrayList();public CompositeEquipment(String name) { super(name); }public boolean add(Equipment equipment) {this.equipment.add(equipment);return true;}public double netPrice(){double netPrice0.;Iterator iterequipment.iterator();for(iter.hasNext())netPrice((Equipment)iter.next()).netPrice();return netPrice;}public double discountPrice(){double discountPrice0.;Iterator iterequipment.iterator();for(iter.hasNext())discountPrice((Equipment)iter.next()).discountPrice();return discountPrice;}//注意这里这里就提供用于访问自己组合体内的部件方法。//上面dIsk 之所以没有是因为Disk是个单独(Primitive)的元素.public Iterator iter(){return equipment.iterator() ;}//重载Iterator方法public boolean hasNext() { return iequipment.size(); }//重载Iterator方法public Object next(){if(hasNext())return equipment.elementAt(i);elsethrow new NoSuchElementException();} } 上面CompositeEquipment继承了Equipment同时为自己里面的对象们提供了外部访问的方法重载了IteratorIterator是Java的Collection的一个接口是Iterator模式的实现。我们再看看CompositeEquipment的两个具体类盘盒Chassis和箱子Cabinet箱子里面可以放很多东西如底板电源盒硬盘盒等盘盒里面可以放一些小设备如硬盘 软驱等。无疑这两个都是属于组合体性质的。 public class Chassis extends CompositeEquipment{public Chassis(String name) { super(name); }public double netPrice() { return 1.super.netPrice(); }public double discountPrice() { return .5super.discountPrice(); } }public class Cabinet extends CompositeEquipment{public Cabinet(String name) { super(name); }public double netPrice() { return 1.super.netPrice(); }public double discountPrice() { return .5super.discountPrice(); } } 至此我们完成了整个Composite模式的架构。我们可以看看客户端调用Composote代码 Cabinet cabinetnew Cabinet(Tower);Chassis chassisnew Chassis(PC Chassis); //将PC Chassis装到Tower中 (将盘盒装到箱子里) cabinet.add(chassis); //将一个10GB的硬盘装到 PC Chassis (将硬盘装到盘盒里) chassis.add(new Disk(10 GB));//调用 netPrice()方法; System.out.println(netPricecabinet.netPrice()); System.out.println(discountPricecabinet.discountPrice()); 上面调用的方法netPrice()或discountPrice()实际上Composite使用Iterator遍历了整个树形结构,寻找同样包含这个方法的对象并实现调用执行。Composite是个很巧妙体现智慧的模式在实际应用中如果碰到树形结构我们就可以尝试是否可以使用这个模式。以论坛为例一个版(forum)中有很多帖子(message),这些帖子有原始贴有对原始贴的回应贴是个典型的树形结构那么当然可以使用Composite模式那么我们进入Jive中看看是如何实现的. Jive解剖 在Jive中 ForumThread是ForumMessages的容器container(组合体)。也就是说ForumThread类似我们上例中的 CompositeEquipment.它和messages的关系如下所示[thread]   |- [message]   |- [message]      |- [message]      |- [message]         |- [message]我们在ForumThread看到如下代码 public interface ForumThread {....public void addMessage(ForumMessage parentMessage, ForumMessage newMessage)throws UnauthorizedException;public void deleteMessage(ForumMessage message)throws UnauthorizedException;public Iterator messages();.... } 类似CompositeEquipment提供用于访问自己组合体内的部件方法增加、删除、遍历。结合我的其他模式中对Jive的分析我们已经基本大体理解了Jive论坛体系的框架如果你之前不理解设计模式而直接去看Jive源代码你肯定无法看懂。 系列文章 Java设计模式1工厂模式Factory模式 Java设计模式2单态模式Singleton模式 Java设计模式3建造者模式Builder模式 Java设计模式4原型模式Prototype模式 Java设计模式5共享模式/享元模式Flyweight模式 Java设计模式6桥模式Bridge模式 Java设计模式7装饰模式Decorator模式 Java设计模式8组合模式Composite模式 Java设计模式9适配器模式Adapter模式 Java设计模式10代理模式Proxy模式 Java设计模式11外观模式Facade模式 Java设计模式12迭代模式Iterator模式 Java设计模式13模板模式Template模式 Java设计模式14责任链模式Chain of Responsibility模式 Java设计模式15备忘录模式Memento模式 Java设计模式16中介模式Mediator模式 Java设计模式17解释器模式Interpreter模式 Java设计模式18策略模式Strategy模式 Java设计模式19状态模式State模式 Java设计模式20观察者模式Observer模式 Java设计模式21访问模式Visitor者模式 Java设计模式22命令模式Command模式转载于:https://www.cnblogs.com/Coda/p/4296397.html
http://www.yutouwan.com/news/253380/

相关文章:

  • 网站框架布局大连房地产网站开发
  • wordpress全站ajax代码企业网站建设公司排名
  • 网站制作优质公司Wordpress官网网址
  • 备案做电影网站吗广州微信网站建设平台
  • 网站建设与管理实训主要内容wordpress 小工具无法拖拽
  • 4399自己做游戏网站叫别人做网站要多久
  • 专业网站建设搭建写代码的软件
  • 三亚网站设计公司万户网络做网站如何
  • 网站内容策划建筑公司资质等级
  • 南漳做网站crm系统网站
  • 九台网站旅游网站开发设计与实现
  • 网站推广软件免费下载杭州app定制公司
  • 新手想做网站赚钱杭州网络科技网站
  • 如何建立自己的网站免费wordpress禁止图片压缩插件
  • 可信网站认证 代理商系统开发技术
  • 如何自学网站开发WordPress mk主题
  • 深圳做网站网络公司有哪些微信订阅号怎么做网站
  • 免费素材网站无版权贵阳企业做网站
  • 网站推广宜选刺盾云下拉电子商务企业网站建设发展论文
  • 做网站建设月收入多少路由器设置用来做网站空间吗
  • 建立微信商城网站开发公司注册资金要求
  • 怎样自己做公司网站网络推广怎么学
  • h5 php mysql网站开发福建省城乡住房建设厅网站
  • 张槎杨和网站建设没有静态ip可以做网站服务器
  • 无锡seo网站建设费用郑州网站优化网络建设有限公司
  • 免费建购物网站中山如何制作网站
  • 有哪些网页游戏网站做亚马逊常用的网站
  • 重庆新闻频道直播 今天重庆seo博客
  • 上街免费网站建设西安微信商城网站开发
  • 有没有什么做水利资料的网站联盟营销是一种什么的网络营销方式