今天学习了桥接模式,小编总结一下!
what
官方定义:将抽象部分与实现部分分离,使他们都可以独立的变化
自己理解:抽象的整体可以实现自己的对象,部分也可以实现自己的对象,抽象和实现是聚合关系
when
当整体有多角度变化,而且部分也是多角度变化,两者独立变化,需要相互解耦的时候就考虑用桥接模式
适用场景:山寨手机
手机是抽象整体,手机的不同品牌是抽象整体的子类,手机零件是抽象部分,电池,耳机等零件是具体的部分
why
其实这个模式和关键在于有两个变化,整体是变化的类,部分也是变化的类
demo
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace 桥接模式
{
class Program
{
static void Main(string[] args)
{
Abstraction ab = new Abstraction();
ab.SetImplementor(new ConcreteImplementorA());
ab.Operation();
ab.SetImplementor(new ConcreteImplementorB());
ab.Operation();
Console.Read();
}
abstract class Implementor
{
public abstract void OperationaImp();
}
class ConcreteImplementorA : Implementor
{
public override void OperationaImp()
{
Console.WriteLine("具体实现A的方法执行");
}
}
class ConcreteImplementorB : Implementor
{
public override void OperationaImp()
{
Console.WriteLine("具体实现B的方法执行");
}
}
class Abstraction
{
protected Implementor implementor;
public void SetImplementor (Implementor implementor)
{
this.implementor = implementor;
}
public virtual void Operation()
{
implementor.OperationaImp();
}
}
class RefinedAbstraction : Abstraction
{
public override void Operation()
{
base.Operation();
}
}
}
}
UML图: