美文网首页
创建者模式

创建者模式

作者: bocsoft | 来源:发表于2019-02-01 16:05 被阅读0次

创建者模式,是将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
隐藏了复杂对象的创建过程,把复杂对象的创建过程加以抽象,通过子类或者重载的方式,动态的创建具有复合属性的对象。

package bridge

//Bridge模式基于类的最小设计原则,通过使用封装、聚合及继承等行为让不同的类承担不同的职责。
//它的主要特点是把抽象(Abstraction)与行为实现(Implementation)分离开来,从而可以保持各部分的独立性以及应对他们的功能扩展

//抽象接口
type DisplayImpl interface {
    rawOpen() string
    rawPrint() string
    rawClose() string
}

//字符串展示结构体
type StringDisplayImpl struct {
    str string
}

//实现DispalyImpl接口:行为实现
func (self *StringDisplayImpl) rawOpen() string {
    return self.printLine()
}
func (self *StringDisplayImpl) rawPrint() string {
    return "|" + self.str + "|\n"
}

func (self *StringDisplayImpl) rawClose() string {
    return self.printLine()
}
func (self *StringDisplayImpl) printLine() string {
    str := "+"
    for _, _ = range self.str {
        str += string("-")
    }
    str += "+\n"
    return str
}

//通过聚合实现抽象和行为实现的分离
type DefaultDisplay struct {
    impl DisplayImpl
}

func (self *DefaultDisplay) open() string {
    return self.impl.rawOpen()
}
func (self *DefaultDisplay) print() string {
    return self.impl.rawPrint()
}

func (self *DefaultDisplay) close() string {
    return self.impl.rawClose()
}

func (self *DefaultDisplay) Display() string {
    return self.open() +
        self.print() +
        self.close()
}

//通过聚合实现抽象和行为实现的分离
type CountDisplay struct {
    *DefaultDisplay
}

func (self *CountDisplay) MultiDisplay(num int) string {
    str := self.open()
    for i := 0; i < num; i++ {
        str += self.print()
    }
    str += self.close()
    return str
}


package builder

import "testing"

func TestBuilder(t *testing.T) {
    expect := "# Title\n## String\n- Item1\n- Item2\n\n"

    director := Director{&TextBuilder{}}
    result := director.Construct()

    if result != expect {
        t.Errorf("Expect result to %s, but %s", result, expect)
    }
}


相关文章

  • OkHttp的使用之设计模式

    使用的设计模式有: 创建者模式 策略模式 门面模式 责任链模式

  • 2. 设计模式与架构

    一、 设计模式 创建型模式抽象工厂模式(AbstractFactory)、工厂模式(Factory)、创建者模式(...

  • 创建者模式

    1.工厂模式 给登录模块做一些基础功能 需求1:登录模块名称不符合要求的警示框 需求2:密码也要这样的警示框 需求...

  • 创建者模式

    模式定义 将一个复杂对象的构建与它的表示分离,使得相同的构建过程可以创建不同的表示。 模式结构 Builder:生...

  • 创建者模式

    创建者模式,是将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。隐藏了复杂对象的创建过程...

  • 创建型模式-创建者模式

    创建者模式是为了创建复杂对象而存在的最佳实践模式.突然想到工作中,使用的新建创意这个功能,感觉可以用创建者模式去组...

  • 工厂模式(创建者模式)

    定义 :定义一个用于创建对象的接口,让子类决定实例化哪个类。使用场景: 任何需要生成复杂对象的地方 Android...

  • Builder Pattern

    创建者模式 定义 Builder design pattern is an alternative way to ...

  • 设计模式-建造者模式(三)

    建造者模式,有4个角色: 导演角色(Director) 抽象创建者角色 (Builder) 具体创建者角色(Con...

  • 创建者模式Builder

    https://www.cnblogs.com/begin1949/p/4930896.html https://...

网友评论

      本文标题:创建者模式

      本文链接:https://www.haomeiwen.com/subject/pqedsqtx.html