美文网首页
设计模式三:建造者模式

设计模式三:建造者模式

作者: 程一刀 | 来源:发表于2021-05-25 09:35 被阅读0次

建造者模式: 将构造复杂对象的过程和组成对象的部件解耦,可分为抽象建造者,具体建造者,指导者,产品

代码如下:


//抽象产品 媒体
class Media  {
    func add(item: MediaItem) {
    }
}

//具体产品 书籍
class Book: Media {}
//具体产品 杂志
class Magazine: Media {}
//具体产品 网站
class WebSite: Media {}

// 产品元素
class MediaItem {
    private var s:String
    init(s: String) {
        self.s = s
    }
}
class Chapter: MediaItem {
    override init(s: String) {
        super.init(s: s)
    }
}
class Article :MediaItem {
    override init(s: String) {
        super.init(s: s)
    }
}

class WebItem: MediaItem {
    override init(s: String) {
        super.init(s: s)
    }
}

//抽象建造者
class MediaBuidler {
    // 以下2步 可以看作 构造复杂对象的 多个步骤(虽然只写了1个)
    func buildBase() {
        
    }
    func addMediaItem(item: MediaItem) {
        
    }
    func getFinishMedia() -> Media? {
        return nil
    }
}

//具体建造者
class BookBuidler: MediaBuidler {
    var book: Book?
    override func buildBase() {
        self.book = Book()
    }
    override func addMediaItem(item: MediaItem) {
        self.book?.add(item: item)
    }
    override func getFinishMedia() -> Media? {
        return self.book
    }
}

class WebSiteBuidler: MediaBuidler {
    var website: WebSite?
    override func buildBase() {
        self.website = WebSite()
    }
    override func addMediaItem(item: MediaItem) {
        self.website?.add(item: item)
    }
    override func getFinishMedia() -> Media? {
        return self.website
    }
}

class MagazinBuidler: MediaBuidler {
    var magazine: Magazine?
    override func buildBase() {
        self.magazine = Magazine()
    }
    override func addMediaItem(item: MediaItem) {
        self.magazine?.add(item: item)
    }
    override func getFinishMedia() -> Media? {
        return self.magazine
    }
}

/// 指导者
class MediaDirector {
    var mb: MagazinBuidler
    init(mb: MagazinBuidler) {
        self.mb = mb
    }
    func produceMedia(list: [MediaItem]) -> Media?{
        self.mb.buildBase()
        for (item) in list {
            self.mb.addMediaItem(item: item)
        }
        return self.mb.getFinishMedia()
    }
}


个人理解还是 将构造复杂对象的过程和组成对象的部件解耦

相关文章

  • Retrofit

    Retrofit设计模式 动态代理,装饰模式,建造者模式,抽象工厂模式,适配器模式 建造者模式创建Retrofit...

  • Java 十一种设计模式深入理解

    目录一、工厂设计模式二、抽象工厂模式三、单例设计模式四、建造者(Builder)模式五、原型模式六、适配器设计模式...

  • Android中涉及的模式

    我的Java设计模式-建造者模式 我的Java设计模式-观察者模式 重学设计模式之单例模式

  • 设计模式之建造者模式

    设计模式之建造者模式 Intro 简介 建造者模式: 建造者模式隐藏了复杂对象的创建过程,它把复杂对象的创建过程加...

  • 设计模式 - 目录

    设计模式01 - 单例模式 设计模式02 - 工厂模式 设计模式03 - 建造者模式 设计模式04 - 适配器模式...

  • 设计模式之建造者模式

    设计模式之建造者模式 1. 模式定义 建造者模式又可以成为生成器模式,它属于对象创建型模式。建造者模式将一个复杂对...

  • java设计模式--建造者模式

    java设计模式--建造者模式 建造者模式定义 建造者模式:是将复杂对象的构建与表示进行分离,使同样的构建过程会有...

  • 【Java设计模式】--建造者模式

    建造者模式(Bulider模式) 一、什么是建造者模式 建造者模式是设计模式的一种,将一个复杂对象的构建与它的表示...

  • 设计模式(十四)中介者模式

    相关文章 设计模式(一)设计六大原则设计模式(二)单例模式的七种写法设计模式(三)建造者模式设计模式(四)简单工厂...

  • 建造者设计模式-Builder design pattern

    建造者设计模式是创建型设计模式的一种。创建型设计模式处理对象创建的问题。 建造者设计模式,用来构建需要经过若干个建...

网友评论

      本文标题:设计模式三:建造者模式

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