`

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

 
阅读更多

桥接模式:

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

// 手机接口
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’ 的关系时再考虑使用。

分享到:
评论

相关推荐

    【资源免费下载】Java代码积累丨大话设计模式(Java实现版本)、线程协作

    设计模式参考《大话设计模式》 工厂简单模式 创造型模式 工厂方法模式 抽象工厂模式 原型模式 建造者模式 单例模式 结构型模式 队列模式 桥接模式 组合模式 装饰模式 外观模式 享元模式 代理模式 行为模式(类行为...

    Python设计模式之桥接模式原理与用法实例分析

    大话设计模式 设计模式——桥接模式 桥接模式(Bridge Pattern):将抽象部分与它的实现部分分离,使它们都可以独立地变化. 程序实例:手机软件的分类 和 手机品牌的分类 耦合度低 两种分类中间用一个set_handsetsoft桥

    Java的23种设计模式百度云下载链接.rar

    Java的23种设计模式是软件工程中非常重要的概念,它们是解决常见编程问题的成熟解决方案,被广泛应用于各种复杂的软件开发中。设计模式不是具体的代码或库,而是一种通用的、可重用的设计方案,它描述了在特定上下文...

    NET 设计模式

    代码可以运行,下载这个后,建议买->《大话设计模式这本书》。来辅助学习。有很多关于C#语言有关的设计模式分别由: 1、模板方法模式 2、外观模式 3、建造者模式 4、观察者模式 5、抽象工厂模式 6、状态模式 7、...

    大话模式源代码

    《大话模式源代码》是一本深入探讨设计模式的书籍,源代码包含了各种经典的设计模式实现,对于理解和应用设计模式有着极大的帮助。设计模式是软件工程中的一种最佳实践,是解决常见问题的经验总结,旨在提高代码的...

    java餐饮管理系统源码6-design_patterns:设计模式

    大话设计模式 Head First 设计模式 设计模式的类型: 总共有 23 种设计模式。这些模式可以分为三大类:创建型模式(Creational Patterns)、结构型模式(Structural Patterns)、 行为型模式(Behavioral Patterns)...

    设计模式课件

    包括UML、简单工厂模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式、单例模式、适配器模式、桥接模式、组合模式、装饰模式、外观模式、享元模式、代理模式、职责链模式、命令模式、迭代器模式、中介者模式...

    java各种设计模式

    设计模式是软件工程中的一种最佳实践,它是在特定情境下为解决常见问题而形成的一套可复用的解决方案。在Java编程中,设计模式尤为重要,因为它可以帮助开发者编写出可维护、可扩展、易于理解的代码。这个压缩包文件...

Global site tag (gtag.js) - Google Analytics