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

做像百姓网这样网站多少钱百度提交网站入口

做像百姓网这样网站多少钱,百度提交网站入口,做平台外卖的网站需要什么资质,宁波做网站gs在 Java 中,**聚合(Aggregation)**关系体现的是一种较弱的包含关系。被聚合的对象的生命周期独立于容器对象,即容器对象并不管理被聚合对象的创建和销毁。下面详细分析 聚合的三种方式 中 Engine 和 Car 的生命周期区别。 1. 通过…

在 Java 中,**聚合(Aggregation)**关系体现的是一种较弱的包含关系。被聚合的对象的生命周期独立于容器对象,即容器对象并不管理被聚合对象的创建和销毁。下面详细分析 聚合的三种方式EngineCar 的生命周期区别。

1. 通过构造函数传入外部创建的对象

class Engine {public void start() {System.out.println("发动机启动");}
}class Car {private Engine engine; // 引用外部创建的 Engine 对象// 通过构造函数接收外部传入的 Engine 对象public Car(Engine engine) {this.engine = engine; // 聚合:Car 使用外部创建的 Engine}public void drive() {engine.start();System.out.println("汽车正在行驶");}public static void main(String[] args) {Engine engine = new Engine(); // 外部创建 Engine 对象Car car = new Car(engine); // 将 Engine 对象传入 Carcar.drive();}
}
生命周期分析:
  • Car 的生命周期
    • 当通过 new Car(engine) 创建 Car 对象时,Car 的生命周期开始。Car 持有一个 Engine 引用,但并不负责 Engine 的创建。
    • Car 对象在 new Car() 调用时创建,但不会控制 Engine 的销毁,它只持有 Engine 的引用。
  • Engine 的生命周期
    • Engine 对象是在外部创建的(在 main 方法中),它的生命周期独立于 Car 对象。Engine 的创建和销毁由外部代码控制,Car 只是通过构造函数将 Engine 引用传入。
    • Engine 的销毁时机取决于外部代码的控制,而非 Car 类。

总结:

  • Car 仅持有 Engine 的引用,但它不管理 Engine 的生命周期。Engine 的生命周期由外部管理,Car 仅在需要时使用。

2. 通过 Setter 方法设置对象

class Engine {public void start() {System.out.println("发动机启动");}
}class Car {private Engine engine; // 引用外部创建的 Engine 对象// 通过 setter 方法将外部创建的 Engine 对象注入public void setEngine(Engine engine) {this.engine = engine; // 聚合:Car 使用外部创建的 Engine}public void drive() {engine.start();System.out.println("汽车正在行驶");}public static void main(String[] args) {Engine engine = new Engine(); // 外部创建 Engine 对象Car car = new Car();car.setEngine(engine); // 使用 setter 注入 Enginecar.drive();}
}
生命周期分析:
  • Car 的生命周期
    • Car 对象的生命周期由 new Car() 控制,Car 会持有一个 Engine 引用,但它的生命周期不管理 Engine 对象。
    • main 方法中,Engine 是在外部创建的,并通过 setEngine() 方法传递给 CarCar 只负责使用 Engine 对象,并不会销毁 Engine
  • Engine 的生命周期
    • Engine 对象的生命周期完全独立,由外部代码控制。在 Car 创建之前,Engine 已经被创建;在 Car 销毁时,Engine 并不会随之销毁。
    • 只有外部代码显式销毁 EngineEngine 的生命周期才会结束。

总结:

  • 在这种方式下,Car 仅依赖于外部创建并传递给它的 Engine 对象。Car 使用 Engine,但并不管理其生命周期。Engine 的销毁由外部控制。

3. 使用集合类型的聚合

import java.util.List;
import java.util.ArrayList;class Engine {public void start() {System.out.println("发动机启动");}
}class Car {private List<Engine> engines = new ArrayList<>(); // 聚合:Car 可以包含多个 Engine 对象// 通过方法添加外部创建的 Engine 对象public void addEngine(Engine engine) {engines.add(engine); // 聚合:Car 依赖外部创建的 Engine}public void drive() {for (Engine engine : engines) {engine.start();}System.out.println("汽车正在行驶");}public static void main(String[] args) {Engine engine1 = new Engine(); // 外部创建 Engine 对象Engine engine2 = new Engine();Car car = new Car();car.addEngine(engine1); // 将 Engine 对象添加到 Car 中car.addEngine(engine2);car.drive();}
}
生命周期分析:
  • Car 的生命周期
    • Car 的生命周期由 new Car() 控制,Car 内部包含一个 List<Engine> 用来保存 Engine 对象的引用。Car 的生命周期会在 new Car() 时开始,但它并不负责 Engine 的创建或销毁。
    • Car 会在 addEngine() 方法中将外部创建的 Engine 对象添加到 engines 集合中,但是它不会管理这些对象的生命周期。
  • Engine 的生命周期
    • Engine 对象的生命周期完全独立于 CarEngine 是在外部创建的,可以被多个 Car 对象共享。
    • Engine 对象的销毁与 Car 无关,Car 只是通过 addEngine() 方法持有 Engine 对象的引用,并不会影响它们的生命周期。

总结:

  • 在这种方式下,Car 仅持有对 Engine 对象的引用,并通过集合(如 List)来保存多个 Engine 对象。Engine 的生命周期由外部控制,而 Car 不负责管理这些 Engine 对象的销毁。

总结对比:

方式Car 的生命周期Engine 的生命周期
通过构造函数传入外部创建的对象Car 对象的生命周期由 new Car() 控制,Car 持有 Engine 引用,但不负责 Engine 的销毁Engine 的生命周期独立于 Car,由外部控制,Car 不管理 Engine 的创建和销毁。
通过 Setter 方法设置对象Car 对象的生命周期由 new Car() 控制,Car 依赖外部传入的 EngineEngine 的生命周期由外部控制,不依赖于 Car,可以在多个容器中共享。
使用集合类型的聚合Car 持有 Engine 对象的引用,Car 的生命周期与 Engine 无关,Car 不管理 Engine 的销毁。Engine 对象由外部创建,可以在多个 Car 对象中共享,生命周期由外部管理。

结论:

聚合(Aggregation) 关系中,Car 并不负责 Engine 对象的生命周期。无论是通过构造函数、setter 方法,还是集合类型,Car 都只是持有 Engine 对象的引用,并利用它来执行功能。Engine 对象的生命周期独立于 Car,由外部代码控制,可以在多个容器对象(如多个 Car 实例)之间共享。

http://www.dtcms.com/wzjs/501740.html

相关文章:

  • 承装承修承试材料在哪个网站做seo搜索引擎优化是什么
  • 江西省建设监理网站b站推出的短视频app哪个好
  • 上海网站建设市场分析小企业广告投放平台
  • app免费开发平台有哪些windows7系统优化工具
  • 网站建设做网站好吗中国十大电商平台有哪些
  • 怎么样做兼职网站app定制开发
  • 住房和城乡建设部主网站痘痘怎么去除有效果
  • 做网站公司的商标需要注册吗百分百营销软件
  • 企业做网站有什么用bilibili推广网站
  • 福安市住房和城乡建设网站今日时政新闻热点
  • 企业网站推广湖南岚鸿推广中国互联网公司排名
  • 东莞wordpress建站网站模板免费下载
  • 千锋前端培训多少钱武汉seo论坛
  • 网站建设交印花税零基础seo入门教学
  • 那些网站上可以做任务赚钱 》今日新闻最新头条10条
  • 企业网站案例欣赏淘宝关键词优化技巧教程
  • 北京网站制作报价百度公司高管排名
  • 福建省建设注册执业资格管理中心网站1688自然排名怎么做好
  • sql server做网站希爱力的功效及副作用
  • CSS做网站下拉菜单被图片挡住了如何免费制作网站
  • 前端做网站都要做哪些推广app的方法和策略
  • 在什么网站做知识禁毒竞赛seo狂人
  • 关于网站建设的请示范文2024年最新时政热点
  • 淘宝网站如何做虚拟新浪舆情通
  • 长沙网站设计公司哪家好seo基本概念
  • wordpress制作单页网站导航页面活动推广朋友圈文案
  • 一直能打开的网站突然打不开百度云资源搜索网站
  • 网站卖掉被拿来做博彩了免费打广告平台有哪些
  • 如何传图片做网站推广方案有哪些
  • 网站广告推广怎么做厦门关键词seo排名网站