桥接模式:
当发现我们需要多角度去分类实现对象,而只用继承会造成大量的类增加,不能满足开放-封闭 原则,就应该考虑用桥接模式了。
// 手机接口
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’ 的关系时再考虑使用。
分享到:
相关推荐
桥接模式 组合模式 装饰模式 外观模式 享元模式 代理模式 行为模式(类行为模式) 解释器模式 模板方法模式 行为模式(对象行为模式) 策略模式 观察者模式 状态模式 导入模式 迭代器模式 命令模式 职责链模式 进来...
大话设计模式总结.pdf大话设计模式总结.pdf大话设计模式总结.pdf大话设计模式总结.pdf大话设计模式总结.pdf
设计模式之《大话设计模式》.pptx
Android之大话设计模式——:抽象工厂模式借鉴.pdf
《大话设计模式》C++实现-design-patterns-cpp
大话设计模式 完整设计模式介绍
本文实例讲述了Python设计模式之桥接模式原理与用法。分享给大家供大家参考,具体如下: 桥接模式(Bridge Pattern):将抽象部分与它的实现部分分离,使它们都可以独立地变化. 下面是一个桥接模式的demo: #!/usr/bin...
读书笔记:大话设计模式C++
android之大话设计模式.pdf
《大话设计模式》对各种设计模式,做简要归纳(原创)
二十三种设计模式二十三种设计模式二十三种设计模式
树懒自己整理的大话设计模式的修行笔记,对程序设计有很大的帮助,主要是以自己学习的习惯整理的!
单例模式是软件设计模式中的一种经典模式,它在许多场景下被广泛使用,尤其是在需要全局唯一实例的情况下。本文将深入探讨单例模式的概念、作用、实现方式以及其在实际编程中的应用。 单例模式的核心思想是确保一个...
android之大话设计模式整理.pdf
读书笔记:设计模式大话设计模式
大话设计模式之外观模式 经典代码 C#类
大话设计模式源代码之简单工厂模式 经典代码
读书笔记:设计模式学习《大话设计模式》
NULL 博文链接:https://helei050.iteye.com/blog/2086309
读书笔记:设计模式初学代码大话设计模式初学练习