最近换了一份新工作,全新的开始,一切还在奋斗的道路上,自己给自己打个气!
设计模式系列很久没有更新了,废话不多说,开始今天的桥接模式。
定义:
何为Bridge模式?我们知道,实现与抽象之间总是存在着强依赖,Bridge模式的意义就是解耦实现与抽象,这意味着实现与抽象不再有着静态的依赖关系,它们彼此可以拥有独立的变化,从而互不影响。
UML:
实例:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace BridgePattern { /// <summary> /// This is abstraction, represents shape. /// </summary> public interface IShape { /// <summary> /// The shape has a property called Drawing, which represents implemention of drawing behavior. /// </summary> IDrawing Drawing { get; set; } /// <summary> /// The shape has a method called Draw. If you don't adopt Bridge pattern, in general, you should implement this method to draw. /// </summary> /// <returns></returns> string Draw(); } /// <summary> /// This is a concrete abstraction. represents circle shape. /// </summary> public class CircleShape : IShape { public CircleShape(IDrawing drawing) { Drawing = drawing; } public IDrawing Drawing { get; set; } /// <summary> /// The method Draw uses IDrawing to bridge. You will find that you don't need to implement concrete darwing behavior, you just forward the request to IDrawing. /// </summary> /// <returns></returns> public string Draw() { return Drawing.Draw(); } } /// <summary> /// This is abstraction of implementation, represents abstract implementation, it has ability to independent with IShape. /// </summary> public interface IDrawing { string Draw(); } /// <summary> /// This is concrete implementation, derived from IDrawing. /// </summary> public class CircleDrawing : IDrawing { public string Draw() { return "Draws a circle."; } } class Program { static void Main(string[] args) { IDrawing drawing = new CircleDrawing(); //Get a circle drawing which will be used later. IShape shape = new CircleShape(drawing);// Get a circle shape which uses drawing object to draw. Console.WriteLine(shape.Draw());//Ok, shape draws. Console.ReadKey(); } } }
One Reply to “桥接模式 (Bridge Pattern)-结构型模式第五篇”