package com.eric.结构型模式.桥梁模式.引例;
/**
* @author Eric
* @ProjectName my_design_23
* @description 实现化角色
* @CreateTime 2020-12-01 14:01:45
*/
public interface Implementor {
//方法的实现化声明
public void operationImp();
}
ConcreteImplementor.java
package com.eric.结构型模式.桥梁模式.引例;
/**
* @author Eric
* @ProjectName my_design_23
* @description 具体实现化角色
* @CreateTime 2020-12-01 14:04:28
*/
public class ConcreteImplementor implements Implementor {
//方法的具体实现
@Override
public void operationImp() {
System.out.println("处理业务中...");
}
}
创建抽象化角色
Abstraction.java
package com.eric.结构型模式.桥梁模式.引例;
/**
* @author Eric
* @ProjectName my_design_23
* @description 抽象化角色
* @CreateTime 2020-12-01 14:06:48
*/
public abstract class Abstraction {
//定义对现实化角色的引用
private Implementor implementor;
public Abstraction(Implementor implementor)
{
this.implementor = implementor;
}
//业务方法
public void operation(){
this.implementor.operationImp();
}
}
package com.eric.结构型模式.桥梁模式.引例;
/**
* @author Eric
* @ProjectName my_design_23
* @description 修正抽象化
* @CreateTime 2020-12-01 14:09:53
*/
public class RefinedAbstraction extends Abstraction {
public RefinedAbstraction(Implementor implementor) {
super(implementor);
}
//修正父类的方法
@Override
public void operation() {
//修正抽象化的方法
super.operation();
}
}
package com.eric.结构型模式.桥梁模式.引例;
/**
* @author Eric
* @ProjectName my_design_23
* @description 测试类
* @CreateTime 2020-12-01 14:10:58
*/
public class Client {
public static void main(String[] args) {
//定义一个实现化角色
ConcreteImplementor implementor = new ConcreteImplementor();
//定义一个抽象化角色
RefinedAbstraction refinedAbstraction = new RefinedAbstraction(implementor);
//执行
refinedAbstraction.operation();
}
}
package com.eric.结构型模式.桥梁模式.例1.color;
/**
* @author Eric
* @ProjectName my_design_23
* @description 抽象颜色接口
* @CreateTime 2020-12-02 15:16:40
*/
public interface Color {
//获取颜色
String getColor();
}
package com.eric.结构型模式.桥梁模式.例1.shape;
import com.eric.结构型模式.桥梁模式.例1.color.Color;
/**
* @author Eric
* @ProjectName my_design_23
* @description 抽象图形接口
* @CreateTime 2020-12-02 15:15:45
*/
public abstract class AbstractShape {
Color color;
public AbstractShape(Color color){
this.color = color;
}
public abstract void draw();
}
package com.eric.结构型模式.桥梁模式.例1.color;
/**
* @author Eric
* @ProjectName my_design_23
* @description 绿色
* @CreateTime 2020-12-02 16:19:35
*/
public class Green implements Color {
@Override
public String getColor() {
return "绿色";
}
}
package com.eric.结构型模式.桥梁模式.例1.color;
/**
* @author Eric
* @ProjectName my_design_23
* @description 红色
* @CreateTime 2020-12-02 16:18:51
*/
public class Red implements Color{
@Override
public String getColor() {
return "红色";
}
}
package com.eric.结构型模式.桥梁模式.例1.shape;
import com.eric.结构型模式.桥梁模式.例1.color.Color;
/**
* @author Eric
* @ProjectName my_design_23
* @description 圈圈
* @CreateTime 2020-12-02 15:57:16
*/
public class circle extends AbstractShape {
public circle(Color color) {
super(color);
}
@Override
public void draw() {
System.out.println("使用"+color.getColor()+"画圈圈...");
}
}
package com.eric.结构型模式.桥梁模式.例1.shape;
import com.eric.结构型模式.桥梁模式.例1.color.Color;
/**
* @author Eric
* @ProjectName my_design_23
* @description 框框
* @CreateTime 2020-12-02 16:01:23
*/
public class Square extends AbstractShape {
public Square(Color color) {
super(color);
}
@Override
public void draw() {
System.out.println("使用"+color.getColor()+"画框框...");
}
}
package com.eric.结构型模式.桥梁模式.例1;
import com.eric.结构型模式.桥梁模式.例1.color.Color;
import com.eric.结构型模式.桥梁模式.例1.color.Green;
import com.eric.结构型模式.桥梁模式.例1.shape.AbstractShape;
import com.eric.结构型模式.桥梁模式.例1.shape.Square;
/**
* @author Eric
* @ProjectName my_design_23
* @description 测试类
* @CreateTime 2020-12-02 17:35:08
*/
public class Test {
public static void main(String[] args) {
Color color = new Green();
AbstractShape shape = new Square(color);
shape.draw();
}
}
原文:https://www.cnblogs.com/zyl-0110/p/14204678.html