首页 > 其他分享 >设计模式五(桥接模式)

设计模式五(桥接模式)

时间:2022-10-17 09:56:25浏览次数:37  
标签:桥接 模式 int radius drawAPI Circle 设计模式 public DrawAPI

 

 

public interface DrawAPI {
   public void drawCircle(int radius, int x, int y);
}
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 +"]");
   }
}
public abstract class Shape {
   protected DrawAPI drawAPI;
   protected Shape(DrawAPI drawAPI){
      this.drawAPI = drawAPI;
   }
   public abstract void draw();  
}
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);
   }
}
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();
   }
}

核心是shape和子类。其中shape使用抽象类作为成员变量,后续运行代码时候父类引用子类的对象。并在子类对象用多态调用方法。

标签:桥接,模式,int,radius,drawAPI,Circle,设计模式,public,DrawAPI
From: https://www.cnblogs.com/czfblog-01/p/16798082.html

相关文章

  • IDEA debug模式下修改变量后运行 ALT + F8 然后选中变量,右键可以修改变量值 Set Val
    IDEAdebug模式下修改变量后运行ALT+F8然后选中变量,右键可以修改变量值SetValue首先运行Debug模式来到30行,可以见到这个时刻入参configPath,对于if的判断结果是t......
  • 工厂模式
    1、c++工厂模式,点击进入(简单工厂模式、工厂方法模式、抽象工厂模式)2、实现可动态注册的简单工厂模式,点击进入3、c语言实现简单工厂模式,点击进入()4、工厂模式,点击进入(......
  • 初识设计模式 - 观察者模式
    简介观察者设计模式(ObserverDesignPattern)的别名有很多,如发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听(Source/Listener)模式或从属者(Depend......
  • 软件设计师:23种设计模式
    总图创建型设计模式1.抽象工厂方法模式代码packagenwnu.sun.patterns.createtype.abstractfactory;/***抽象工厂设计模式*/publicclassAbstractFfactor......
  • 【设计模式】原型模式(只能说很少用)
    针对原型模式(我有把这个模式命名为克隆模式)的定义(设计意图)原型实例指定创建对象的种类,并通过拷贝这些原型来创建新的对象。(所以核心是:拷贝原型对象)直接基于内存进行拷贝......
  • archlinux + i3wm 使用 tauri 开发者模式 (react + ts) 预览白屏 解决方法
    在我这台机器只需将tauri.conf.json的devPath的localhost改成127.0.0.1即可参考来源https://github.com/tauri-apps/tauri/issues/1140......
  • redis的发布订阅模式
    redis的发布订阅模式redis发布订阅(pub/sub)是一种消息通信模式,消息的发布者不会将消息发送给特定的订阅者,而是通过消息通道(频道)广播出去,让订阅该消息主题(频道)的订阅......
  • C++设计模式
    简单工厂模式简单工厂模式就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建。不需要管它内部的具体实现,只要告诉它你的需求即可,就可以在不同条件下创建不同实例......
  • 02.00.简单工厂模式
    简单工厂模式SimpleFactoryPatternSimpleFactory模式实际上不是GoF23个设计模式中的一员在工厂类中创建具体对象namespace简单工厂模式{//抽象产品......
  • 01.单例模式
    单例模式它只有一个实例向外提供访问点考虑到多线程情况下创建实例分类懒汉式不支持多线程usingSystem;namespace单例模式{///<summary>......