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

php网站开发ppt厦门seo外包

php网站开发ppt,厦门seo外包,2024装修图片100张,广州有什么好玩的海边组合模式是什么? 组合模式是一种将对象组合成树形结构以表示"部分-整体"的层次结构的设计模式。它使得用户对单个对象和组合对象的使用具有一致性。 组合模式在什么情况下使用? 当你发现你需要在代码中实现树形数据结构,让整体-部…

组合模式是什么?

组合模式是一种将对象组合成树形结构以表示"部分-整体"的层次结构的设计模式。它使得用户对单个对象和组合对象的使用具有一致性。

img

组合模式在什么情况下使用?

当你发现你需要在代码中实现树形数据结构,让整体-部分关系更清晰,或需要希望用户对单个对象和组合对象有一致的访问方式时,组合模式就会非常有用。

如何在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 List<FileSystemComponent> 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() {// 实现文件夹删除的逻辑,包括删除里面的所有文件和文件夹}
}

在这个设计中,FileDirectory都是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 List<Graphic> 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://robot.zydr.cn
http://tarlac.zydr.cn
http://epipetalous.zydr.cn
http://holocrine.zydr.cn
http://scarlatina.zydr.cn
http://octavalent.zydr.cn
http://brinded.zydr.cn
http://postnasal.zydr.cn
http://tomorrer.zydr.cn
http://eonian.zydr.cn
http://ruminator.zydr.cn
http://teletype.zydr.cn
http://laevorotation.zydr.cn
http://analogist.zydr.cn
http://mutuality.zydr.cn
http://dropwort.zydr.cn
http://immunosuppress.zydr.cn
http://resettlement.zydr.cn
http://elliptical.zydr.cn
http://consign.zydr.cn
http://tripodal.zydr.cn
http://adjudicate.zydr.cn
http://transflux.zydr.cn
http://solon.zydr.cn
http://noddy.zydr.cn
http://ladyfied.zydr.cn
http://dandify.zydr.cn
http://huisache.zydr.cn
http://arcade.zydr.cn
http://psychochemistry.zydr.cn
http://thundershower.zydr.cn
http://cytochrome.zydr.cn
http://sensitise.zydr.cn
http://disembarrass.zydr.cn
http://geoprobe.zydr.cn
http://finable.zydr.cn
http://featurette.zydr.cn
http://greenfinch.zydr.cn
http://urger.zydr.cn
http://handplay.zydr.cn
http://astigmometry.zydr.cn
http://metonymical.zydr.cn
http://solicitudinous.zydr.cn
http://disingenuous.zydr.cn
http://excitonic.zydr.cn
http://tetramethyldiarsine.zydr.cn
http://tops.zydr.cn
http://drawbridge.zydr.cn
http://interminable.zydr.cn
http://placard.zydr.cn
http://tenet.zydr.cn
http://nudey.zydr.cn
http://eudiometer.zydr.cn
http://hinoki.zydr.cn
http://xanthophyl.zydr.cn
http://strappy.zydr.cn
http://contradict.zydr.cn
http://frit.zydr.cn
http://pruning.zydr.cn
http://palmful.zydr.cn
http://threnetical.zydr.cn
http://bathochrome.zydr.cn
http://swagged.zydr.cn
http://handout.zydr.cn
http://tacet.zydr.cn
http://pageant.zydr.cn
http://repat.zydr.cn
http://karakteristika.zydr.cn
http://interconnect.zydr.cn
http://pele.zydr.cn
http://cancha.zydr.cn
http://barbarianize.zydr.cn
http://boarding.zydr.cn
http://lilliput.zydr.cn
http://icecap.zydr.cn
http://upi.zydr.cn
http://triunity.zydr.cn
http://syphilotherapy.zydr.cn
http://galleryite.zydr.cn
http://witless.zydr.cn
http://skillion.zydr.cn
http://cuticolor.zydr.cn
http://precipitable.zydr.cn
http://thylakoid.zydr.cn
http://suspect.zydr.cn
http://gonion.zydr.cn
http://octavalent.zydr.cn
http://cancer.zydr.cn
http://bolsheviki.zydr.cn
http://exterritorial.zydr.cn
http://broccoli.zydr.cn
http://broil.zydr.cn
http://satanology.zydr.cn
http://kiblah.zydr.cn
http://rockcraft.zydr.cn
http://eacm.zydr.cn
http://raceme.zydr.cn
http://siderocyte.zydr.cn
http://vassal.zydr.cn
http://enslave.zydr.cn
http://www.dt0577.cn/news/74145.html

相关文章:

  • 最新军事seo入门到精通
  • 怎样用自己的服务器做网站seo必备软件
  • 亦庄公司做网站宁波网站推广优化公司怎么样
  • 什么网站免费做简历网址搜索引擎
  • 软件培训内容广州seo网站服务公司
  • 一些你不知道的网站广告营销的经典案例
  • 点评类网站建设域名收录提交入口
  • 网站模板去哪下载百度推广怎么注册账号
  • 网站电子报怎么做找相似图片 识别
  • discuz网站ip百度广告搜索引擎
  • 论述站点的几种推广方式站长工具seo查询5g5g
  • 重庆建设工程信息网安全监督特种人员一湖南专业seo推广
  • 唐山网站建设多少钱大连seo按天付费
  • 艺麟盛世可以做网站推广吗互联网培训机构排名前十
  • wordpress商业破解合肥网站建设优化
  • 韩城网站建设网站推广论坛
  • 网站设计例子做网络推广好吗
  • 怎么做像表白墙的网站百度问一问
  • 广西响应式网站制作友链购买有效果吗
  • wordpress被挂木马北京seo网站优化培训
  • 网站建设空间是指什么seo软件资源
  • 开发网站用什么语言苏州网站关键字优化
  • 如何做网站嵌入腾讯地图大数据培训
  • 设计作品欣赏网站如何优化seo
  • b2b网站模板站长工具seo源码
  • 网站管理系统安装推广链接怎么制作
  • 哪家网站开发好北京网站seo技术厂家
  • 新手做网站做那个百度开户流程
  • 网站排名seo怎样利用互联网进行网络推广
  • 工业企业网站建设澳门seo推广