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

内江市建设培训中心网站红盾工商信息查询网

内江市建设培训中心网站,红盾工商信息查询网,装潢公司网站源码php,网站建设与网站设计组合模式是什么#xff1f; 组合模式是一种将对象组合成树形结构以表示部分-整体的层次结构的设计模式。它使得用户对单个对象和组合对象的使用具有一致性。 组合模式在什么情况下使用#xff1f; 当你发现你需要在代码中实现树形数据结构#xff0c;让整体-部…组合模式是什么 组合模式是一种将对象组合成树形结构以表示部分-整体的层次结构的设计模式。它使得用户对单个对象和组合对象的使用具有一致性。 组合模式在什么情况下使用 当你发现你需要在代码中实现树形数据结构让整体-部分关系更清晰或需要希望用户对单个对象和组合对象有一致的访问方式时组合模式就会非常有用。 如何在Java中实现组合模式 让我们进入一个我们都熟悉的场景——**使用计算机操作文件和文件夹。**在这个场景中文件和文件夹都可以被看作是文件系统的一部分它们有许多共同的操作比如打开、移动、删除等。让我们看看如何使用组合模式来简化这样的系统。 首先我们定义一个顶层的抽象类 FileSystemComponent public abstract class FileSystemComponent {protected String name;public FileSystemComponent(String name) {this.name name;}public abstract void open();public abstract void move();public abstract void delete();// 如果需要也可以添加add()和remove()方法来管理子组件 }然后我们创建两个子类分别代表文件File和文件夹Directory public class File extends FileSystemComponent {public File(String name) {super(name);}public void open() {// 实现文件打开的逻辑}public void move() {// 实现文件移动的逻辑}public void delete() {// 实现文件删除的逻辑} }public class Directory extends FileSystemComponent {private ListFileSystemComponent components new ArrayList();public Directory(String name) {super(name);}public void add(FileSystemComponent component) {components.add(component);}public void remove(FileSystemComponent component) {components.remove(component);}public void open() {// 实现文件夹打开的逻辑如打开里面的所有文件和文件夹}public void move() {// 实现文件夹移动的逻辑}public void delete() {// 实现文件夹删除的逻辑包括删除里面的所有文件和文件夹} }在这个设计中File和Directory都是FileSystemComponent都具有公共的方法。对于用户来说不论是操作文件还是操作文件夹其方式都是一致的。 另一个例子-图形绘制应用 继续我们对组合模式的探讨让我们通过一个绘制图形的实例来进一步理解组合模式的应用。 设想你在开发一个图形绘制的应用你需要在图纸上绘制出各种简单和复杂的图形其中复杂的图形可能是由一系列较小的图形组成的。在这种场景下无论是简单的圆还是由多个形状组成的复杂图形都可以被视为绘图应用中的一个图形。 首先我们定义一个代表图形的顶层接口 public interface Graphic {void move(int x, int y);void draw(); }然后实现一个简单的基本元素如 “Circle” public class Circle implements Graphic {private int x, y;public void move(int x, int y) {this.x x;this.y y;// 实现移动逻辑...}public void draw() {// 实现绘制逻辑...} }为了使组合图形能够管理简单图形我们可以创建一个ComplexGraphic类同样实现Graphic接口 public class ComplexGraphic implements Graphic {private ListGraphic children new ArrayList();public void add(Graphic graphic) {children.add(graphic);}public void remove(Graphic graphic) {children.remove(graphic);}public void move(int x, int y) {for (Graphic child : children) {child.move(x, y);}}public void draw() {for (Graphic child : children) {child.draw();}} }在使用过程中客户端代码无需关心Graphic接口的具体实现它可以一致地对待所有的图形无论是简单图形还是复杂图形 Circle circle1 new Circle(); circle1.move(1, 1); circle1.draw();Circle circle2 new Circle(); circle2.move(2, 2); circle2.draw();ComplexGraphic complex new ComplexGraphic(); complex.add(circle1); complex.add(circle2); complex.draw();我们可以看到通过组合模式客户端代码可以以一致的方式处理单个对象和组合的对象大大简化了代码的复杂性。希望这篇博客能让你对组合模式有更深入的理解。 总结组合模式提供了一种优秀的机制用于表达和管理整体以及部分之间的关系编写出来的代码不仅清晰有序也更加符合开闭原则。
http://www.dnsts.com.cn/news/85555.html

相关文章:

  • 上海网站建设 迈若陈江网站建设
  • 网站开发与数据库网站建设投入及费用
  • 关于建设网站的请示百度博客网站模板下载
  • 芷江建设工程招投标网站秦皇岛做网站汉狮网络
  • 漳州网站制作网络优化公司
  • 公司建网站 内部邮箱广告平面设计教程
  • 如何用织梦做网站装修计划方案
  • 深圳有哪些网站是做餐饮沙龙的VPS如何做网站服务器
  • 建立网站ftp森普网站建设
  • 网站内页标题有什么好的推广平台
  • 手机可以设计网站吗免费申请二级域名
  • 山东建站张家口网站建设开发
  • 中国工商银行官方网站登录个人微信公众号申请
  • 网上书店网网站建设天津网站经营性备案
  • 房山区做网站wordpress怎么登陆地址
  • 上海网站开发caiyiduo互联网公司用wordpress
  • 做色流网站要注意什么地方html5前端开发工程师
  • 重庆做网站多少钱建站软件安卓
  • 宜昌永东建设网站做网站买空间
  • 如何利用php开源系统建立php网站国内做网站最好的公司
  • 中粮我买网是哪个公司做的网站昆山花桥做网站
  • a站播放量最高的视频中国免费网站服务器主机域名
  • 重庆公司建设网站房地产设计图与规划图
  • 中小学生做试卷的网站6软件开发项目
  • 上海中学门户网站现在做一个app大概多少钱
  • 广州乐地网站建设公司手游推广平台哪个好
  • php搭建一个简单的网站上海建设工程学校网站
  • 别人买了域名做违法网站e4a做网站软件
  • 网站空间邮箱每年要续费吗怎么备份网站数据库
  • 建设网站的方案张家港早晨网站制作