设计模式应用说明java_Java设计模式应用——桥接模式

性能管理系统中,数据产生后需要经过采集,汇聚,入库三个流程,用户才能查询使用。

采集可以是snmp采集,也可以是ems采集;汇聚可以使storm汇聚,也可以是spark汇聚;入库可以是hdfs入库,也可以是mppdb入库。

针对不同场景,我们可以灵活选择不同的采集,汇聚,入库方式。这种一个功能需要多种服务支持,每种服务又有不同类型的实现,使用桥接模式再适合不过。

(注:这里仅仅是桥接模式的例子,实际应用中,采集、汇聚、入库时异步执行的,他们之间通过消息通信)

桥接模式,顾名思义,就是把每种服务看做一座桥,我们可以根据实际场景选择不同的桥。

上述例子表示数据产生到可以使用之前需要经过三座桥:采集桥->汇聚桥->入库桥。每座桥可以选择不同的构造。

b6647d22d0c9bed6e8250b11b78102b4.png

下面来看具体代码

1、 采集桥

packagecom.coshaho.learn.bridge.collect;/***

* CollectionService.java Create on 2017年6月1日 下午11:00:10

*

* 类功能说明: 采集服务

*

* Copyright: Copyright(c) 2013

* Company: COSHAHO

* @Version 1.0

* @Author coshaho*/

public abstract classCollectionService

{abstract voidexecute();public voidrun()

{

execute();

}

}

2、 汇聚桥

packagecom.coshaho.learn.bridge.aggregate;importcom.coshaho.learn.bridge.collect.CollectionService;/***

* AggregationService.java Create on 2017年6月1日 下午11:00:23

*

* 类功能说明: 汇聚服务

*

* Copyright: Copyright(c) 2013

* Company: COSHAHO

* @Version 1.0

* @Author coshaho*/

public abstract classAggregationService

{public voidrun()

{if(null !=collectionService)

{

collectionService.run();

}

execute();

}abstract voidexecute();

CollectionService collectionService;publicAggregationService(CollectionService collectionService)

{this.collectionService =collectionService;

}

}

3、 入库桥

packagecom.coshaho.learn.bridge.store;importcom.coshaho.learn.bridge.aggregate.AggregationService;/***

* StoreService.java Create on 2017年6月1日 下午11:08:57

*

* 类功能说明: 入库服务

*

* Copyright: Copyright(c) 2013

* Company: COSHAHO

* @Version 1.0

* @Author coshaho*/

public abstract classStoreService

{public voidrun()

{if(null !=aggregationService)

{

aggregationService.run();

}

execute();

}abstract voidexecute();

AggregationService aggregationService;publicStoreService(AggregationService aggregationService)

{this.aggregationService =aggregationService;

}

}

4、 EMS采集桥

packagecom.coshaho.learn.bridge.collect;public class EMSCollectionService extendsCollectionService

{

@Overridevoidexecute()

{

System.out.println("EMS collection.");

}

}

5、 SNMP采集桥

packagecom.coshaho.learn.bridge.collect;public class SNMPCollectionService extendsCollectionService

{

@Overridevoidexecute()

{

System.out.println("SNMP collection.");

}

}

6、 Storm汇聚桥

packagecom.coshaho.learn.bridge.aggregate;importcom.coshaho.learn.bridge.collect.CollectionService;public class StormAggregationService extendsAggregationService

{publicStormAggregationService(CollectionService collectionService)

{super(collectionService);

}

@Overridevoidexecute()

{

System.out.println("Storm aggregation.");

}

}

7、 Spark汇聚桥

packagecom.coshaho.learn.bridge.aggregate;importcom.coshaho.learn.bridge.collect.CollectionService;public class SparkAggregationService extendsAggregationService

{publicSparkAggregationService(CollectionService collectionService)

{super(collectionService);

}

@Overridevoidexecute()

{

System.out.println("Spark aggregation.");

}

}

8、 MPPDB入库桥

packagecom.coshaho.learn.bridge.store;importcom.coshaho.learn.bridge.aggregate.AggregationService;public class MPPDBStoreService extendsStoreService

{publicMPPDBStoreService(AggregationService aggregationService)

{super(aggregationService);

}

@Overridevoidexecute()

{

System.out.println("MPPDB store.");

}

}

9、 HDFS入库桥

packagecom.coshaho.learn.bridge.store;importcom.coshaho.learn.bridge.aggregate.AggregationService;public class HDFSStoreService extendsStoreService

{publicHDFSStoreService(AggregationService aggregationService)

{super(aggregationService);

}

@Overridevoidexecute()

{

System.out.println("HDFS store.");

}

}

10、 测试类

packagecom.coshaho.learn.bridge;importcom.coshaho.learn.bridge.aggregate.AggregationService;importcom.coshaho.learn.bridge.aggregate.StormAggregationService;importcom.coshaho.learn.bridge.collect.CollectionService;importcom.coshaho.learn.bridge.collect.SNMPCollectionService;importcom.coshaho.learn.bridge.store.HDFSStoreService;importcom.coshaho.learn.bridge.store.StoreService;/***

* BridgeTest.java Create on 2017年6月1日 下午10:59:43

*

* 类功能说明: 桥接模式测试

*

* Copyright: Copyright(c) 2013

* Company: COSHAHO

* @Version 1.0

* @Author coshaho*/

public classBridgeTest

{public static voidmain(String[] args)

{

CollectionService snmpService= newSNMPCollectionService();

AggregationService stormService= newStormAggregationService(snmpService);

StoreService hdfsService= newHDFSStoreService(stormService);

hdfsService.run();

}

}

11、 测试结果

SNMP collection.

Storm aggregation.

HDFS store.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值