设计模式学习笔记(二)【Bridge、Builder】

设计模式第二篇笔记。主要是Bridge和Builder模式。感觉比较难。上课时一脸懵逼。orz

Builder

将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

(使用场景:画高矮胖瘦的小人,过程都是画头身手脚,但具体如何画是不同的。)
Builder模式主要是用于创建一些复杂对象,这些对象内部构建间的建造顺序通常是稳定的,但对象内部的构建通常面临复杂的变化。
Builder模式中很重要的一个类是Director,用它来控制建造过程,也用它来隔离用户与建造过程的关联。
Builder是在当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时适用的模式。
看一下Builder的结构图,如下
clipboard.png

图中,Builder是为创建一个Product对象的各个部件指定的抽象接口。(建造小人各个部分的抽象类)
ConcreteBuilder则是具体建造者,实现Builder接口,构造和装配各个部件。(具体实现画出小人的头身手脚各部分)
Product是产品角色。(具体的小人)
Director是指挥官,构建一个使用Builder接口的对象。(根据用户需求构建小人对象)

Birdge

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

clipboard.png

//Implementor类
abstract class Implementor{
    public abstract void Operation();
}

//ConcreteImplementorA等派生类
class ConcreteImplementorA : Implementor{
    public override void Operation(){
        //具体实现
    }
}

class ConcreteImplementorB : Implementor{
    public override void Operation(){
        //具体实现
    }
}

//Abstraction类
class Abstraction{
    protected Implementor implementor;
    
    public void SetImplementor(Implementor implementor){
        this.implementor = implementor;
    }
    
    public virtual void Operation(){
        implementor.Operation();
    }
}

//RefinedAbstraction类
class RefinedAbstraction : Abstraction{
    public override void Operation(){
        implementor.Operation();
    }
}

//Main
static void Main(string[] args){
    Abstraction ab = new RefinedAbstraction();
    
    ab.SetImplementor(new ConcreteImplementorA());
    ab.Operation();
    
    ab.SetImplementor(new ConcreteImplementorB());
    ab.Operation();
}

实现系统可能有多角度分类,每一种分类都有可能变化,那么就把这种多角度分离出来让它们独立变化,减少它们之间的耦合。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值