桥接模式(Bridge Pattern)
桥接模式(Bridge Pattern)是将抽象部分与它的实现部分分离,使它们都可以独立地变化,使得设计更具扩展性,其实现细节对客户透明。它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(interface)模式。在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,就需要使用桥接模式(Bridge Pattern)。由于聚合关系建立在抽象层,要求开发者针对抽象化进行设计与编程,这增加了系统的理解与设计难度。
using System;
namespace ConsoleApplication
{
interface IDrawingAPI
{
void DrawCircle(double x,double y,double radius);
}
/** "具体实现" 1/2 */
class DrawingAPI1 : IDrawingAPI
{
public void DrawCircle(double x,double radius)
{
Console.WriteLine("API1.circle at {0}:{1} radius {2}",x,y,radius);
}
}
/** "具体实现" 2/2 */
class DrawingAPI2 : IDrawingAPI
{
public void DrawCircle(double x,double radius)
{
Console.WriteLine("API2.circle at {0}:{1} radius {2}",radius);
}
}
/** "抽象" */
interface IShape
{
void Draw();
void ResizeByPercentage(double pct);
}
// /** "Refined Abstraction:扩展抽象在下面一层接受更详细的细节。对实现者隐藏更精细的元素。" */
class CircleShape : IShape
{
private double x,radius;
private IDrawingAPI drawingAPI;
public CircleShape(double x,double radius,IDrawingAPI drawingAPI)
{
this.x = x; this.y = y;
this.radius = radius;
this.drawingAPI = drawingAPI;
}
public void Draw()
{
drawingAPI.DrawCircle(x,radius);
}
public void ResizeByPercentage(double pct)
{
radius *= pct;
}
}
/** "Client" */
class Program
{
public static void Main(string[] args)
{
IShape[] shapes = new IShape[2];
shapes[0] = new CircleShape(1,2,3,new DrawingAPI1());
shapes[1] = new CircleShape(5,7,11,new DrawingAPI2());
foreach (IShape shape in shapes)
{
shape.ResizeByPercentage(2.5); shape.Draw();
}
}
}
}
原文地址:https://blog.csdn.net/lwf3115841/article/details/131799498
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。