首页 > 其他分享 >07.桥接模式

07.桥接模式

时间:2022-12-05 22:55:07浏览次数:33  
标签:draw 07 桥接 模式 int radius Circle public

桥接模式

将抽象部分与实现部分分离,使它们都可以独立的变化

  1. 定义接口和抽象类
namespace 桥接模式
{
    // 实现接口
    public interface IDraw
    {
        void DrawCircle(int radius, int x, int y);
    }

    // 抽象部分 构造时注入接口
    public abstract class Shape
    {
        protected IDraw Draw;
        public Shape(IDraw draw)
        {
            this.Draw = draw;
        }
        public abstract void draw();
    }
}

  1. 实现接口
namespace 桥接模式
{
    public class RedCircle : IDraw
    {
        public void DrawCircle(int radius, int x, int y)
        {
            Console.WriteLine("Drawing Circle[ color: red, radius: "
               + radius + ", x: " + x + ", " + y + "]");
        }
    }

    public class GreenCircle : IDraw
    {
        public void DrawCircle(int radius, int x, int y)
        {
            Console.WriteLine("Drawing Circle[ color: green, radius: "
           + radius + ", x: " + x + ", " + y + "]");
        }
    }
}
  1. 抽象部分的实现

重写抽象部分的实实现

namespace 桥接模式
{
    public class Circle : Shape
    {
        private int x, y, radius;

        public Circle(int x, int y, int radius, IDraw draw)
            : base(draw)
        {
            this.x = x;
            this.y = y;
            this.radius = radius;
        }

        public override void draw()
        {
            Draw.DrawCircle(radius, x, y);
        }
    }
}

  1. 调用

namespace 桥接模式
{
    class Program
    {
        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();

            Console.WriteLine("Hello World!");
        }
    }
}

标签:draw,07,桥接,模式,int,radius,Circle,public
From: https://www.cnblogs.com/thomerson/p/16953824.html

相关文章

  • Queries Gym - 100741A - 树状数组
    给定\(n\)和\(m\),对于\(n\)个数字\(a_i\),进行下列三种操作:(1)+pr:将p位置的元素加上r,输出此时p位置的值;(2)-pr:将p位置的元素减去r,若p位置的值小......
  • 300007 混凝土强度等级及选用范围
    <?phpheader('Content-Type:text/html;charset=utf-8');define('ROOT',$_SERVER['DOCUMENT_ROOT']);includeROOT.'/assets/php/head.php';$tit='混凝土强度等级......
  • Redis的三种模式
    一、Redis模式Redis有三种模式:分别是主从同步/复制、哨兵模式、Cluster主从复制:主从复制是高可用Redis的基础,哨兵和群集都是在主从复制基础上实现高可用的。主从复制主要......
  • Redis的三种模式
    一、redis主从复制1、主从复制-哨兵-集群主从复制:主从复制是高可用Redis的基础,哨兵和集群都是在主从复制基础上实现高可用的。主从复制主要实现了数据的多机备份,以及对于......
  • 央行DR007在哪里查看
    1、中国外汇交易中心,点击官网进入https://www.chinamoney.com.cn/chinese/ 2、点击数据选项,接着选择货币市场行情  3、点击质押式回购 ......
  • 设计模式简单总结
    UML例子该例子主要有继承关系,实现接口关系,依赖关系,组合(合成)关系,关联关系。UML中接口的两种表示方法:简单工厂模式如果只有计算父类和具体的加减乘除子类就已经满足封......
  • LeetCode: 307. Range Sum Query - Mutable
    LeetCode:307.RangeSumQuery-Mutable题目描述Givenanintegerarraynums,findthesumoftheelementsbetweenindices​​i​​​and​​j(i≤j)​​,i......
  • [设计模式] 装饰器模式
    一、装饰器模式在软件开发过程中,由于需求的改动,可能面临对某个或某些对象新增一些新的功能的需求。根据开闭原则,新增功能我们也不能直接去修改原有的类,而如果使用继......
  • 【设计模式】——你真的会单例吗?
    【简介】单例模式,属于创建类型的一种常用的​​软件设计​​模式。通过单例模式的方法创建的类在当前进程中只有一个实例(根据需要,也有可能一个线程中属于单例,如:仅线程上下文......
  • 最新版gym-0.26.2中Atari环境下各游戏在不同模式和困难度下的遍历
    相关内容参看前文:​​最新版gym-0.26.2下Atari环境的安装以及环境版本v0,v4,v5的说明​​  =========================================== gym中Atari游戏共收录62个游戏,具......