标签:手机 uml 示例 简历 分类 例子 his 能力 ext
原文链接:https://www.cnblogs.com/adamjwh/p/9033548.html
? 桥接模式,又叫做桥梁模式,顾名思义,就是有座“桥”,那这座桥是什么呢?就是一条聚合线(下方UML图),比如我们下面会举的例子:手机又手机品牌和手机游戏等等,每个手机品牌都有多款手机游戏,那是不是二者之间就聚合了?这就是合成、聚合复用的体现,当我们发现类又多层据称是,就可以考虑使用桥接模式,用聚合代替继承。
? 桥接模式(Bridge):将抽象部分与他的实现部分分离,使他们都可以独立的变化。UML结构图如下:
- Abstraction: 未抽象化的角色,定义出该角色的行为,同时保存一个对实现化角色的引用;
- Implementor:是实现化角色,他是接口或者抽象类,定义角色必须的行为和属性,
- RefinedAbstraction:为修正抽象化角色,引用实现化角色对抽象化角色进行修正,
- ConcreteImplementor:为具体实现化角色,实现接口或者抽象类定义的方法或者属性,
说简单点就是在Abstraction 和 Implementor之间架了一座桥梁(聚合线),这里体现了一个原则,就是合成,服用原则,具体看下面代码示例。
? 我们有一个作为桥接实现的 DrawAPI 接口和实现了 DrawAPI 接口的实体类 RedCircle、GreenCircle。Shape 是一个抽象类,将使用 DrawAPI 的对象。BridgePatternDemo,我们的演示类使用 Shape 类来画出不同颜色的圆。
创建桥接实现实现接口。
public interface DrawAPI {
public void drawCircle(int radius, int x, int y);
}
创建实现了DrawAPI 接口的实体桥接实现类,
public class RedCircle implements DrawAPI {
@Override
public void drawCircle(int radius, int x, int y) {
System.out.println("Drawing Circle[ color: red, radius: "
+ radius +", x: " +x+", "+ y +"]");
}
}
public class GreenCircle implements DrawAPI {
@Override
public void drawCircle(int radius, int x, int y) {
System.out.println("Drawing Circle[ color: green, radius: "
+ radius +", x: " +x+", "+ y +"]");
}
}
使用 DrawAPI 接口创建抽象类 Shape。
public abstract class Shape {
protected DrawAPI drawAPI;
protected Shape(DrawAPI drawAPI){
this.drawAPI = drawAPI;
}
public abstract void draw();
}
创建实现了Shape 接口的实体类。
public class Circle extends Shape {
private int x, y, radius;
public Circle(int x, int y, int radius, DrawAPI drawAPI) {
super(drawAPI);
this.x = x;
this.y = y;
this.radius = radius;
}
public void draw() {
drawAPI.drawCircle(radius,x,y);
}
}
使用 Shape 和 DrawAPI 类画出不同颜色的圆。
public class BridgePatternDemo {
public static void main(String[] args) {
Shape redCircle = new Circle(100,100, 10, new RedCircle());
Shape greenCircle = new Circle(100,100, 10, new GreenCircle());
redCircle.draw();
greenCircle.draw();
}
}
执行程序,输出结果
Drawing Circle[ color: red, radius: 10, x: 100, 100]
Drawing Circle[ color: green, radius: 10, x: 100, 100]
标签:手机 uml 示例 简历 分类 例子 his 能力 ext
原文地址:https://www.cnblogs.com/zhaoqiang-lab/p/13224967.html