桥接器设计模式例题

news2024/12/30 3:50:03

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

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

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

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

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

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

Color(颜料类)

//颜料
public class Color {

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

DrawingTool(绘画工具类)

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

Paper(纸类)

//纸类
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(笔类)

//笔类
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(测试类)

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.coloradmin.cn/o/1927663.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构之初始二叉树(2)

找往期文章包括但不限于本期文章中不懂的知识点: 个人主页:我要学编程(ಥ_ಥ)-CSDN博客 所属专栏:数据结构(Java版) 二叉树的前置知识(概念、性质、、遍历) 通过上篇文章的学习,我们…

Babylonjs学习笔记(十一)——加载geoJson文件

一、定义基本场景类 定义场景定义相机 import { ArcRotateCamera, Color4, CubeTexture, Engine, GlowLayer, KeyboardEventTypes, Scene, Vector3 } from babylonjs/core;import { AdvancedDynamicTexture } from babylonjs/gui;class SceneManager {public engine: Engine;…

springboot系列教程(一):简介与入门案例(含源码)

一、SpringBoot简介 SpringBoot继承了Spring优秀的基因,上手难度小简化配置,提供各种默认配置来简化项目配置内嵌式容器简化Web项目,简化编码 Spring Boot 则会帮助开发着快速启动一个 web 容器,在 Spring Boot 中,只…

【Linux】从零开始认识多线程 --- 线程控制

在这个浮躁的时代 只有自律的人才能脱颖而出 -- 《觉醒年代》 从零开始认识多线程 --- 线程控制 1 知识回顾2 线程控制2.1 线程创建2.2 线程等待2.3 线程终止 3 测试运行3.1 小试牛刀 --- 创建线程3.2 探幽析微 --- 理解线程参数3.3 小有心得 --- 探索线程返回3.4 求索无厌 …

金九银十,软件测试面试题大全(自动化篇+含答案)

“ 今天我给大家介绍一些python自动化测试中常见的面试题,涵盖了Python基础、测试框架、测试工具、测试方法等方面的内容,希望能够帮助你提升自己的水平和信心。” 项目相关 1.什么项目适合做自动化测试? 答:一般来说&#xff…

鸿蒙模拟器(HarmonyOS Emulator)Beta申请审核流程

文 | Promise Sun 一.背景: 鸿蒙项目开发需要使用模拟器进行开发测试,但目前想在DevEco Studio开发工具中使用模拟器就必须到华为官网进行报名申请,参加“鸿蒙模拟器(HarmonyOS Emulator)Beta活动申请”。 申请审核通…

在互联网供应链系统可能是永远不会过时的系统

一、前言 在互联网在到人工智能,从基本的门户网站,社交网站,到移动互联网,视频网站,再到现在比较火爆短视频直播和人工智能AI,大模型。互联网的迭代,出现了无数的系统。但是有些系统一直久经不…

知识图谱和 LLM:利用Neo4j驾驭大型语言模型(探索真实用例)

这是关于 Neo4j 的 NaLLM 项目的一篇博客文章。这个项目是为了探索、开发和展示这些 LLM 与 Neo4j 结合的实际用途。 2023 年,ChatGPT 等大型语言模型 (LLM) 因其理解和生成类似人类的文本的能力而风靡全球。它们能够适应不同的对话环境、回答各种主题的问题,甚至模拟创意写…

Java中的流类型详解

Java中的流类型详解 1、按照流的方向分类1.1 输入流(InputStream)1.2 输出流(OutputStream) 2、按照实现功能分类2.1 节点流(Node Stream 或 Basic Stream)2.2 处理流(Wrapper Stream 或 Proces…

Java语言程序设计——篇四(2)

类和对象 方法设计定义和使用方法访问方法和修改方法方法的调用方法参数的传递✨方法重载✨构造方法(构造器)🚩this关键字this关键字主要用于以下两种情况: 编程练习静态变量和静态方法静态变量静态方法🌈解释:main方法的访问权限…

玩客云刷入海纳思系统

玩客云(晶晨S805)刷机 | 海纳思系统 (ecoo.top) https://www.ecoo.top/update/soft_init/amlproject/USB_Burning_Tool_v2.1.3.exe https://node4.histb.com:9088/update/system/s805/hinas_s805_eMMC.burn.img.zip

【排序算法】—— 归并排序

归并排序时间复杂度O(NlongN),空间复杂度O(N),是一种稳定的排序,其次可以用来做外排序算法,即对磁盘(文件)上的数据进行排序。 目录 一、有序数组排序 二、排序思路 三、递归实现 四、非递归实现 一、有序数组排序 要理解归…

[算法] 优选算法(五):二分查找(上)

🌸个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 🏵️热门专栏: 🧊 Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 🍕 Collection与…

Linux虚拟机扩展磁盘空间

文章目录 在VM上进行扩展新的磁盘空间进入虚拟机将扩展的磁盘空间分配给对应的分区 VM 下的Linux虚拟机提示磁盘空间不足,需要对其进行磁盘扩容,主要有以下两步: 在VM上进行扩展新的磁盘空间 先关闭虚拟机在VM的虚拟机设置处进行硬盘扩展 …

STM32自己从零开始实操:PCB全过程

一、PCB总体分布 以下只能让大家看到各个模块大致分布在板子的哪一块,只能说每个人画都有自己的理由: 电源:从外部接入电源,5V接到中间,向上变成4V供给无线,向下变成3V供给下面的接口(也刻意放…

Java---SpringBoot详解二

勤奋勤劳铸梦成, 晨曦微露起长征。 汗水浇灌花似锦, 寒窗苦读岁月明。 千锤百炼心如铁, 万里征途志不倾。 持之以恒终有日, 功成名就笑谈中。 目录 一,统一响应结果 二,三层架构 三,分层解耦 四…

力扣第九题

回文数 提示: 给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。 回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 代码展示&#…

请你谈谈:AnnotatedBeanDefinitionReader 显式地注册一个Bean到Spring容器,以及注册并解析配置类

为了深入探讨Spring框架中的beanDefinition对象,我们不可避免地要提及BeanFactoryPostProcessor这一核心类,它作为Spring的bean工厂后置处理器发挥着关键作用。接下来,我们将详细讨论BeanFactoryPostProcessor的执行时机,这是一个…

顶顶通呼叫中心中间件-添加自定义变量到CDR方法(mod_cti基于FreeSWITCH)

顶顶通呼叫中心中间件-添加自定义变量到CDR方法(mod_cti基于FreeSWITCH) 1、自定义变量添加到cti.json 例:需要添加的变量为“bridge_uepoch" 2、添加进数据库 在数据库中找到表"cdr"在cdr表中也添加数据,数据名为新变量名&#xff1a…

基于Java的科大讯飞大模型API调用实现

写在前面:因为现在自己实习的公司新拓展的一个业务是结合AI的低代码平台,我负责后端的开发,之前一直都是直接使用gpt或者文心一言等ui界面来直接使用大模型,从来没有自己调接口过,所以本文记录一下自己第一次使用大模型…