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

传奇网页游戏哪个好玩淘宝关键词优化怎么弄

传奇网页游戏哪个好玩,淘宝关键词优化怎么弄,电商网站建设讯息,小程序diy制作平台目录 场景 不用模式实现 代码实现 有何问题 解决方案 代码改造 组合模式优缺点 思考 何时选用 场景 不用模式实现 代码实现 叶子对象 package day14组合模式;/*** 叶子对象*/ public class Leaf {/*** 叶子对象的名字*/private String name "";/**…

目录

场景

不用模式实现 

代码实现 

有何问题 

解决方案

代码改造 

组合模式优缺点

思考 

何时选用


场景

不用模式实现 

代码实现 

叶子对象

package day14组合模式;/*** 叶子对象*/
public class Leaf {/*** 叶子对象的名字*/private String name = "";/*** 构造方法,传入叶子对象的名字*/public Leaf(String name){this.name = name;}/*** 输出叶子对象的结构*/public void printStruct(String preStr){System.out.println(preStr + "_" + name);}
}

组合对象

package day14组合模式;import java.util.ArrayList;
import java.util.Collection;/*** 组合对象,组合对象里面包含其他的组合对象或者是叶子对象* 由于类型不同,需要分开记录*/
public class Composite {/*** 用来记录包含的其他组合对象*/private Collection<Composite> childComposite = new ArrayList<>();/*** 用来记录包含的其他叶子对象*/private Collection<Leaf> childLeaf = new ArrayList<>();/*** 组合对象的名字*/private String name = "";/*** 构造方法*/public Composite(String name){this.name = name;}/*** 向组合对象加入被它包含的其他组合对象* @param c 被它包含的其他组合对象*/public void addComposite(Composite c){this.childComposite.add(c);}/*** 向组合对象加入被它包含的叶子对象* @param leaf 被它包含的叶子对象*/public void addLeaf(Leaf leaf){this.childLeaf.add(leaf);}/*** 输出组合对象自身的结构*/public void printStruct(String prestr){// 先把自己输出去System.out.println(prestr + "+" + this.name);// 然后添加一个空格,表示向后缩进一个空格,输出自己包含的叶子对象prestr += " ";for (Leaf leaf : childLeaf) {leaf.printStruct(prestr);}// 输出当前对象的子对象了for (Composite c : childComposite) {// 递归输出每个子对象c.printStruct(prestr);}}
}

Client

package day14组合模式;public class Client {public static void main(String[] args) {// 定义所有的组合对象Composite root = new Composite("服装");Composite c1 = new Composite("男装");Composite c2 = new Composite("女装");// 定义所有的叶子对象Leaf leaf1 = new Leaf("衬衣");Leaf leaf2 = new Leaf("夹克");Leaf leaf3 = new Leaf("裙子");Leaf leaf4 = new Leaf("套装");// 按照树的结构来组合 组合对象和叶子对象root.addComposite(c1);root.addComposite(c2);c1.addLeaf(leaf1);c1.addLeaf(leaf2);c2.addLeaf(leaf3);c2.addLeaf(leaf4);// 调用跟对象的输出功能来输出整棵树root.printStruct("");}
}

有何问题 

必须区分组合对象和叶子对象,并进行有区别的对待

解决方案

组合模式

定义:

思路:将组合对象和叶子对象统一起来。通过引入一个抽象的组件对象,作为组合对象和叶子对象的父对象,这样就统一起来了。

代码改造 

抽象父组件对象

package day14组合模式.Component;/*** 抽象的父组件对象*/
public abstract class Component {/*** 输出组件自身的名称*/public abstract void printStruct(String preStr);/*** 向组合对象中加入组件对象* @param child*/public void addChild(Component child){throw new UnsupportedOperationException("对象不支持这个功能");}/*** 从组合对象中移出某个组件对象* @param child*/public void removeChild(Component child){throw new UnsupportedOperationException("对象不支持这个功能");}/*** 返回某个索引对应的组件对象* @param index 需要获取的组件对象的索引,索引从0开始* @return 索引对应的组件对象*/public Component getChildren(int index){throw new UnsupportedOperationException("对象不支持这个功能");}
}

Leaf类

继承一下这个抽象类,别的没有变化

package day14组合模式;import day14组合模式.Component.Component;/*** 叶子对象*/
public class Leaf extends Component {/*** 叶子对象的名字*/private String name = "";/*** 构造方法,传入叶子对象的名字*/public Leaf(String name){this.name = name;}/*** 输出叶子对象的结构*/public void printStruct(String preStr){System.out.println(preStr + name);}
}

组合对象类

package day14组合模式;import day14组合模式.Component.Component;import java.util.ArrayList;
import java.util.Collection;
import java.util.List;/*** 组合对象,组合对象里面包含其他的组合对象或者是叶子对象* 由于类型不同,需要分开记录*/
public class Composite extends Component {/*** 用来存储组合对象中包含的子组件对象*/private List<Component> childComponents = null;/*** 组合对象的名字*/private String name = "";/*** 构造方法*/public Composite(String name) {this.name = name;}public void addChild(Component child) {// 延迟初始化if (childComponents == null) {childComponents = new ArrayList<>();}childComponents.add(child);}/*** 输出组合对象自身的结构*/public void printStruct(String prestr) {// 先把自己输出去System.out.println(prestr + this.name);// 如果还包含有子组件,那么就输出这些子组件对象if (this.childComponents != null) {prestr += " ";// 输出当前对象的子对象了for (Component c : childComponents) {// 递归输出每个子对象c.printStruct(prestr);}}}
}

去掉了之前区分组合对象和叶子对象的方法。

Client

        // 定义所有的组合对象Component root = new Composite("服装");Component c1 = new Composite("男装");Component c2 = new Composite("女装");// 定义所有的叶子对象Component leaf1 = new Leaf("衬衣");Component leaf2 = new Leaf("夹克");Component leaf3 = new Leaf("裙子");Component leaf4 = new Leaf("套装");// 按照树的结构来组合 组合对象和叶子对象root.addChild(c1);root.addChild(c2);c1.addChild(leaf1);c1.addChild(leaf2);c2.addChild(leaf3);c2.addChild(leaf4);// 调用跟对象的输出功能来输出整棵树root.printStruct("");

组合模式优缺点

 

思考 

本质:统一叶子对象和组合对象,一视同仁全部当成Component对象

何时选用

 

http://www.shuangfujiaoyu.com/news/26108.html

相关文章:

  • 贵州省交通建设集团网站seo优化顾问服务阿亮
  • 孝感网站开发公司厦门网站推广公司哪家好
  • 网站模板文件的名字搜索引擎优化方法有哪几种
  • 比较国内外政府门户网站建设特点怎么制作网页广告
  • 深圳网站网络推广公司百度一下百度搜索百度
  • 傻瓜式网站制作域名被墙查询检测
  • 淮安做网站卓越凯欣深圳抖音seo
  • 永久免费的网站软件谷歌网址
  • 淘宝网怎样做网站网址查询
  • 武汉网站建设027惠州seo关键词排名
  • 南京 网站制作公司哪家好宁波seo推广咨询
  • 没有注册公司可以做网站吗aso关键词优化计划
  • 网站怎么做弹窗谷歌seo外包
  • 怎么仿一个复杂的网站旺道seo优化
  • wordpress 网站描述百度文库账号登录入口
  • 做网站要在阿里云上买几个贡献天津seo优化公司
  • 网络设计师工资seo推广一个月见效
  • wordpress 显示访客数seo推广的方法
  • 广州市公司网站建设seo在线工具
  • 诸城网站制作灰色行业关键词推广
  • 高端定制网站快速seo关键词优化方案
  • 青岛建站模板厂家沈阳关键词优化价格
  • 做一般的公司门户网站投资额优化大师专业版
  • 网站建设费如何做账免费制作小程序平台
  • 如何做电子商城网站seo优化是指
  • 可信赖的昆明网站建设广告软文小故事800字
  • php企业网站的毕业论文万网域名注册官网查询
  • 社交媒体推广seo站长工具 论坛
  • 网站后台管理系统摘要怎么写深圳百度推广排名优化
  • 学习做网站的网站排名第一的手机清理软件