桥接器设计模式例题

news/2024/8/22 18:10:11 标签: 设计模式, 桥接模式, java

        笔有大、中、小三种型号,纸有A4、8K、16K三种型号,颜料有红、蓝、绿三种,请采用桥接器设计模型进行系统设计,能够使用不同型号的笔在不同型号的纸上利用不同颜色的颜料进行绘画。

        下面这段代码展示了一个简单的桥接模式(桥接模式)的实现。在这个模式中,桥接模式通过将抽象部分(绘制工具)与实现部分(颜色、笔)分离,使它们可以独立变化。
        (1)Color类:表示颜料,包含颜色的名称。

        (2)DrawingTool类:绘画工具,是一个接口,定义了绘画工具应该具有的绘画行为。

        (3)Pen类:实现了绘图工具接口,代表一种笔,利用颜色来绘画。

        (4)Paper类:实现了DrawingTool接口,代表一种纸,通过组合关系连接到笔实现在纸上绘画的功能。

        (5)Test类:测试类,展示了如何使用这些类来进行绘画,创建不同颜色和大小的笔和纸,并在纸上进行绘画操作。

Color(颜料类)

java">//颜料
public class Color {

   private String name;
   public Color(String name) {
       this.name = name;
   }
   public String getName() {
       return name;
   }
}

DrawingTool(绘画工具类)

java">//绘画工具
public interface DrawingTool {
   void draw();
}

Paper(纸类)

java">//纸类
public class Paper implements DrawingTool{
   //通过组合的方式实现Paper和Pen之间的联系
   private Pen pen;
   private String name;
   public String getName() {
       return name;
   }
   public Paper(Pen pen,String name) {
       this.pen = pen;
       this.name=name;
   }
   public void draw() {
       pen.draw();
       System.out.println("在"+getName()+"纸上绘画");
   }
}

Pen(笔类)

java">//笔类
public class Pen implements DrawingTool{
   private String name;
   public String getName() {
       return name;
   }
   //通过组合的方式实现Color和Pen之间的联系
   private Color color;
   public Pen(Color color, String name) {
       this.color = color;
       this.name=name;
   }
   public void draw() {
       System.out.println("使用" + color.getName() + "颜色的"+getName()+"型笔绘画");
   }
}

Test(测试类)

java">public class Test {
   public static void main(String[] args) {

       Color red = new Color("红");
       Color blue = new Color("蓝");
       Color green = new Color("绿");

       Pen bigPen = new Pen(green,"大");
       Pen middlePen = new Pen(red,"中");
       Pen smallPen = new Pen(green,"小");

       Paper a4Paper = new Paper(middlePen,"A4");
       Paper eightKPaper = new Paper(smallPen,"8K");
       Paper sixteenKPaper = new Paper(bigPen,"16K");

// 绘画
       a4Paper.draw();
       eightKPaper.draw();
       sixteenKPaper.draw();
   }
}

运行结果:


http://www.niftyadmin.cn/n/5556561.html

相关文章

【Java--数据结构】队列

欢迎关注个人主页:逸狼 创造不易,可以点点赞吗~ 如有错误,欢迎指出~ 目录 队列 队列的方法 队列方法使用举例 模拟实现队列 使用链表实现队列 使用数组实现队列 设计循环队列 双端队列 用队列实现栈 队列 只允许在一端进行插入数据操作&…

塑胶件缺胶影响工业生产,云盘科技提供解决方案!

塑料件的成型检测,主要检测其中的各种高低、形状的柱子、块块、条条之类的。因为有一些产品在成型时,可能柱子没有足够的料,又或者是某个挡块只有一半这样的。所以需要进行一定的检测。 塑胶在注塑加工成型后,出现缺胶缺陷。思普泰…

excel根据数据批量创建并重命名工作表

需求 根据一列数据,批量创建并重命名工作表 做法 1. 右键该sheet,选择查看代码 2. 输入VBA代码 正向创建 Sub create_sheets_by_col()Dim num% 定义为integer*num Application.WorksheetFunction.CountA(Sheet1.Range("A:A")) num是非空…

嵌入式 - 什么是磁珠

磁珠(Ferrite bead)又称磁环、滤波磁环,在电路中的被动元件,用来抑制电路中的高频杂讯。磁珠是一种特别的扼流圈,其成份多半为铁氧体,利用其高频电流产生的热耗散来抑制高频杂讯。磁珠有时也称为EMI滤波器或…

跨平台开发:在Linux上构建Windows应用程序

跨平台开发,尤其是在Linux上构建Windows应用程序,是一个有趣且实用的主题。这主要通过几种方法实现,包括使用模拟器、编译器工具链、容器技术以及跨平台开发框架。以下是具体的步骤和工具介绍: 1. 使用Wine Wine 是一个允许在Li…

Java中常见的语法糖

文章目录 概览泛型增强for循环自动装箱与拆箱字符串拼接枚举类型可变参数内部类try-with-resourcesLambda表达式 概览 语法糖是指编程语言中的一种语法结构,它们并不提供新的功能,而是为了让代码更易读、更易写而设计的。语法糖使得某些常见的编程模式或…

vscode常用组件

1.vue-helper 启用后点击右下角注册,可以通过vue组件点击到源码里面 2.【Auto Close Tag】和【Auto Rename Tag】 3.setting---Auto Reveal Exclude vscode跳转node_modules下文件,没有切换定位到左侧菜单目录> 打开VSCode的setting配置&#xff…

docker 安装 onlyoffice

1.文档地址 Installing ONLYOFFICE Docs for Docker on a local server - ONLYOFFICE 2.安装onlyoffice docker run -i -t -d -p 9000:8000 --restartalways -e JWT_ENABLEDfalse onlyoffice/documentserver 如果发现镜像无法下载,可以尝试更换镜像源 {"registry-mir…