📄 bridgeclient.java.svn-base
字号:
package org.hyq.bridge;
/*
* abstract class Shape {
public void draw();
}
class Rectangle extends Shape {
}
class Circle extends Shape {
}
// 这里业务出现了多种画图方式,DP1,DP2……
// 使用继承,创建不同绘图的类,类数量增多
class V1Rectangle extends Rectangle {
public void draw() {
DP1.draw_line();
}
}
class V2Rectangle extends Rectangle {
public void draw() {
DP2.draw_line();
}
}
class V1Circle extends Circle {
public void draw() {
DP1.draw_Circle();
}
}
class V2Circle extends Circle {
public void draw() {
DP2.draw_Circle();
}
}
*/
abstract class Shape {
protected Drawing myDrawing;
abstract public void draw();
Shape(Drawing drawing) {
myDrawing = drawing;
}
protected void drawLine() {
myDrawing.drawLine();
}
protected void drawCircle() {
myDrawing.drawCircle();
}
}
class Rectangle extends Shape {
public Rectangle(Drawing darw) {
super(darw);
}
public void draw() {
drawLine();
drawLine();
drawLine();
drawLine();
}
}
class Circle extends Shape {
public Circle(Drawing draw) {
super(draw);
}
public void draw() {
myDrawing.drawCircle();
}
}
abstract class Drawing {
abstract public void drawLine();
abstract public void drawCircle();
}
class V1Drawing extends Drawing {
public void drawLine() {
DP1.draw_a_line();
}
public void drawCircle() {
DP1.draw_a_circle();
}
}
class V2Drawing extends Drawing {
public void drawLine() {
DP2.drawLine();
}
public void drawCircle() {
DP2.drawCircle();
}
}
class DP1 {
public static void draw_a_line() {
System.out.println("使用DP1的draw_a_line()画线");
}
public static void draw_a_circle() {
System.out.println("使用DP1的draw_a_circle()画圆");
}
}
class DP2 {
public static void drawLine() {
System.out.println("使用DP2的drawLine()画线");
}
public static void drawCircle() {
System.out.println("使用DP2的drawCircle()画圆");
}
}
public class BridgeClient {
public static void main(String[] args) {
Drawing draw1 = new V1Drawing();
Drawing draw2 = new V2Drawing();
Shape shape1 = new Rectangle(draw1);
shape1.draw();
Shape shape2 = new Circle(draw2);
shape2.draw();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -