大话设计模式二十二:桥接模式(手机软件何时统一)

本文深入探讨了桥接模式在解决类过多继承问题时的应用,通过实例展示了如何使用桥接模式来简化类结构。同时,文章阐述了合成与聚合复用原则的重要性,解释了它们在维护类的封装性和避免类膨胀方面的作用。

桥接模式:

        当发现我们需要多角度去分类实现对象,而只用继承会造成大量的类增加,不能满足开放-封闭 原则,就应该考虑用桥接模式了。

// 手机接口
public abstract class Mobile {

	private MobileSoft soft;
	private String brand;

	public Mobile(String brand) {
		this.brand = brand;
	}

	public MobileSoft getSoft() {
		return soft;
	}

	public void setSoft(MobileSoft soft) {
		this.soft = soft;
	}

	public String getBrand() {
		return brand;
	}

	public void setBrand(String brand) {
		this.brand = brand;
	}

	public abstract void run();
}

// nokia手机
public class NokiaMobile extends Mobile {

	public NokiaMobile(String brand) {
		super(brand);
	}

	@Override
	public void run() {
		System.out.print("Nokia Mobile: ");
		this.getSoft().run();
	}

}


// moto手机
public class MotoMible extends Mobile {

	public MotoMible(String brand) {
		super(brand);
	}

	@Override
	public void run() {
		System.out.print("Moto Mobile: ");
		this.getSoft().run();
	}

}


// 手机软件
public abstract class MobileSoft {
	
	public abstract void run();
	
}

// 手机软件: mp3播放器
public class MobileMp3 extends MobileSoft {

	@Override
	public void run() {
		System.out.println("run mobile mp3!");
	}

}

// 手机软件: 游戏
public class MobileGame extends MobileSoft {

	@Override
	public void run() {
		System.out.println("run mobile game!");
	}

}

public class BridgeMain {

	public static void main(String[] args) {
		Mobile nokia = new NokiaMobile("Nokia");
		MobileSoft game = new MobileGame();
		nokia.setSoft(game);
		nokia.run();

		Mobile moto = new MotoMible("Moto");
		MobileSoft mp3 = new MobileMp3();
		moto.setSoft(mp3);
		moto.run();
	}

}

合成/聚合复用原则:

        聚合表示一种弱的拥有关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分(大雁和雁群是聚合关系)。

        合成表示一种强的拥有关系,体现了严格的部分和整体的关系,部分和整体的生命周期一样(大雁和翅膀就是合成关系)。

合成/聚合复用原则优点:

        优先使用对象的合成/聚合将有助于你保持每个类被封装,这样类和类继承层次会保持较小规模,并且不太可能增长为不可控制的庞然大物。

为什么不用继承?

        继承是一种强耦合的关系,父类变,子类也得跟着变,所以我们在用继承时,一定要在是‘is a’ 的关系时再考虑使用。

本资源系统整理了青海湖流域的行政区划边界、主要河流分布以及30米分辨率数字高程模型(DEM)数据,包含可编辑MXD工程文件、标准Shapefile矢量文件以及标准成图TIF文件。数据经过规范化整理与制图处理,具有较高的空间精度和完整的数据结构,可直接应用于GIS空间分析、流域研究、生态环境评估以及科研教学等多种应用场景。从区域地理背景来看,青海湖流域位于青海省东北部,处于青藏高原东北缘,是我国重要的内陆湖泊流域之一。流域以青海湖为中心,周围被祁连山及高原丘陵环绕,整体地势呈现由四周山地向湖盆逐渐降低的地形格局。青海湖是中国最大的内陆咸水湖,对区域气候调节、水循环及生态系统稳定具有重要作用。在行政区划方面,青海湖流域涉及多个县级行政区,本资源系统整理了流域内9个区县的行政边界信息,可用于区域统计分析、行政单元空间叠加分析以及专题制图等应用。矢量行政边界数据结构规范,属性信息清晰,能够方便地与人口、土地利用或气候等数据进行综合分析。在水系与地形方面,流域内河流多发源于周边山地,沿山谷汇入青海湖,形成典型的高原内陆水系结构。主要河流呈放射状向湖区汇流,对流域水文过程具有重要影响。30米分辨率DEM数据能够较为精细地反映流域地形起伏、高程分布以及山地—湖盆地貌结构,可用于坡度、坡向、地形阴影、流域划分及水文分析等多种GIS地形分析。此外,资源还提供标准成图TIF文件,可直接用于科研论文插图、报告展示及教学演示;MXD工程文件保留完整图层结构与制图符号,用户可在ArcGIS平台中进行二次编辑与制图设计。整体数据结构清晰、格式规范,兼容ArcGIS、QGIS等主流GIS软件平台,可广泛应用于流域水文研究、生态环境评价及相关科研工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值