博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
30. 组合实体模式
阅读量:6342 次
发布时间:2019-06-22

本文共 2209 字,大约阅读时间需要 7 分钟。

  hot3.png

 

  • 组合实体(Composite Entity) - 它是主要的实体 bean。它可以是粗粒的,或者可以包含一个粗粒度对象,用于持续生命周期。
  • 粗粒度对象(Coarse-Grained Object) - 该对象包含依赖对象。它有自己的生命周期,也能管理依赖对象的生命周期。
  • 依赖对象(Dependent Object) - 依赖对象是一个持续生命周期依赖于粗粒度对象的对象。
  • 策略(Strategies) - 策略表示如何实现组合实体。

实现

我们将创建作为组合实体的 CompositeEntity 对象。CoarseGrainedObject 是一个包含依赖对象的类。

CompositeEntityPatternDemo,我们的演示类使用 Client 类来演示组合实体模式的用法。

组合实体模式的 UML 图

步骤 1

创建依赖对象。

DependentObject1.java

public class DependentObject1 {	   private String data;   public void setData(String data){      this.data = data;    }    public String getData(){      return data;   }}

DependentObject2.java

public class DependentObject2 {	   private String data;   public void setData(String data){      this.data = data;    }    public String getData(){      return data;   }}

步骤 2

创建粗粒度对象。

CoarseGrainedObject.java

public class CoarseGrainedObject {   DependentObject1 do1 = new DependentObject1();   DependentObject2 do2 = new DependentObject2();   public void setData(String data1, String data2){      do1.setData(data1);      do2.setData(data2);   }   public String[] getData(){      return new String[] {do1.getData(),do2.getData()};   }}

步骤 3

创建组合实体。

CompositeEntity.java

public class CompositeEntity {   private CoarseGrainedObject cgo = new CoarseGrainedObject();   public void setData(String data1, String data2){      cgo.setData(data1, data2);   }   public String[] getData(){      return cgo.getData();   }}

步骤 4

创建使用组合实体的客户端类。

Client.java

public class Client {   private CompositeEntity compositeEntity = new CompositeEntity();   public void printData(){      for (int i = 0; i < compositeEntity.getData().length; i++) {         System.out.println("Data: " + compositeEntity.getData()[i]);      }   }   public void setData(String data1, String data2){      compositeEntity.setData(data1, data2);   }}

步骤 5

使用 Client 来演示组合实体设计模式的用法。

CompositeEntityPatternDemo.java

public class CompositeEntityPatternDemo {   public static void main(String[] args) {       Client client = new Client();       client.setData("Test", "Data");       client.printData();       client.setData("Second Test", "Data1");       client.printData();   }}

步骤 6

验证输出。

Data: TestData: DataData: Second TestData: Data1

 

转载于:https://my.oschina.net/zz006/blog/900197

你可能感兴趣的文章
C#之MemberwiseClone与Clone
查看>>
Android性能优化之利用Rxlifecycle解决RxJava内存泄漏
查看>>
转: 如何为你的开源项目选择一个合适的开源协议?
查看>>
关系型数据库和NOSQL数据库对比
查看>>
Atitit 记录方法调用参数上下文arguments
查看>>
webstorm常用功能FTP,及常用快捷键
查看>>
eclipse html 打开方式
查看>>
[求助] win7 x64 封装 出现 Administrator.xxxxx 的问题
查看>>
人类投资经理再也无法击败电脑的时代终将到来了...
查看>>
一个最小手势库的实现
查看>>
HoloLens开发手记 - Vuforia开发概述 Vuforia development overview
查看>>
Android支付之支付宝封装类
查看>>
<亲测>CentOS中yum安装ffmpeg
查看>>
【分享】马化腾:产品设计与用户体验
查看>>
【机器学习PAI实践十】深度学习Caffe框架实现图像分类的模型训练
查看>>
全智慧的网络:思科十年来最具颠覆性的创新
查看>>
怎样将现有应用迁移到 VMware NSX
查看>>
赛门铁克收购以色列移动安全初创公司Skycure 旨在构建网络安全防御平台
查看>>
《Photoshop蒙版与合成(第2版)》目录—导读
查看>>
“最佳人气奖”出炉!4月27号,谁能拿到阿里聚安全算法挑战赛的桂冠?
查看>>