go建造者模式,创建教室与宿舍

直接代码:

ackage main

import "fmt"

//现在有教室和宿舍,教室两扇们,窗户高两米, 宿舍一扇门,窗户高一米

type Room struct {
    doorNum      int 
    windowHeight int 
}

func (r *Room) showRoomInfo() {
    fmt.Println("door num:", r.doorNum, "door windowHeight:", r.windowHeight)
}

type RoomBuilder interface {
    build() *Room
}

func BuildRoom(builder RoomBuilder) *Room {
    return builder.build()
}

type ClassRoomBuilder struct {
}

func (*ClassRoomBuilder) build() *Room {
    return &Room{2, 2}
}

type DormitoryBuilder struct {
}

func (*DormitoryBuilder) build() *Room {
    return &Room{1, 1}
}

func main() {
    room := BuildRoom(&ClassRoomBuilder{})
    room.showRoomInfo()

    room = BuildRoom(&DormitoryBuilder{})
    room.showRoomInfo()
    //同理我们需要一个客厅一个门没有窗户,就可以写一个客厅的builder
    //此处例子很简单,而实际中build函数可能处理很复杂的事,通过builder模式可以把具体的
    //实例与创建过程分开,如此容易扩展与替换创建过程
}
时间: 2024-11-13 23:09:27

go建造者模式,创建教室与宿舍的相关文章

五、建造者模式--创建型模式

建造者模式:可以将一个产品的内部表象与产品的生成过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象 建造都模式UML类图: 类图关系说明: 建造者(Builder)角色:给出一个抽象接口,以规范产品对象的各个组成成分的建造.一般而言,此接口独立于应用程序的商业逻辑.模式中直接创建产品对象的是具体建造者(ConcreteBuilder)角色.具体建造者类必须实现这个接口所要求的方法:一个是建造方法, 另一个是结果返还方法. 具体建造者(Concrete Builder)角色:担任

设计模式之建造者模式(创建型)

模式定义 建造者模式属于23种设计模式中的创建型模式,可以理解为创建对象的一种很好的方法. 所谓建造者模式就是将组件和组件的组件过程分开,然后一步一步建造一个复杂的对象.所以建造者模式又叫生成器模式. 建造者模式类图 模式结构 建造者模式包含如下角色 Builder:抽象建造者 ConcreteBuilder:具体建造者 Director:指挥者 Product:产品角色 如果系统只需要一个具体的建造者类的时候,可以省略抽象建造者,有时候指挥者类也可以省略,让建造者类同时充当指挥者和建造者 简单

使用建造者模式模拟游戏地图的创建

使用建造者模式模拟游戏地图的创建 换种形式学设计模式,让自己更有兴趣的学设计模式 :) 本文使用了建造者模式创建不同的游戏地图,当然是用控制台模拟的假地图... 1 何为建造者模式 1.1 介绍 建造者模式,是将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. 建造者模式隐藏了复杂对象的创建过程,它把复杂对象的创建过程加以抽象,通过子类继承或者重载的方式,动态的创建具有复合属性的对象. 1.2 特点 隔离复杂对象的创建和使用,相同的方法,不同执行顺序,产生不同事件结果

建造者模式(Builder)

定义 (本人在阅读完本书的中英两个版本之后发现对建造者模式十窍懂了九窍,所以直接去网上搜别人的分析了,所以本章大部分是根据网上的资料收集来的,此外,代码例子表示本书的例子不合适,也换了,所以本章和这本书关系不大.) 建造者模式是将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示.建造者模式最重要的两个角色:抽象建造者(Builder)和指导者(Director),其中建造者知道怎么(How)去建造产品,而指导者知道去制造什么(What)产品,建造者模式用建房子的例子来说明

【设计模式】 模式PK:工厂模式VS建造者模式

1.概述 工厂方法模式注重的是整体对象的创建方法,而建造者模式注重的是部件构建的过程,旨在通过一步一步地精确构造创建出一个复杂的对象.我们举个简单例子来说明两者的差异,如要制造一个超人,如果使用工厂方法模式,直接产生出来的就是一个力大无穷.能够飞翔.内裤外穿的超人:而如果使用建造者模式,则需要组装手.头.脚.躯干等部分,然后再把内裤外穿,才能创造一个超人. 2.工厂方法建造超人 2.1 类图 首先我们按照工厂方法创造超人,我们来看类图.类图中我们按照年龄段把超人分为两种类型:成年超人(如克拉克.

设计模式学习04—建造者模式

一.动机与定义 创建对象时,我们知道可以使用工厂方式来创建,使调用者和具体实现解耦,但是有一种情况,当要创建的多个对象之间重复性较大,只有创建步骤.组装顺序或者内部构件不同时,工厂模式就需要进一步的演化了,如我们去KFC,有很多种套餐,比如套餐1(薯条+可乐+汉堡),套餐2(鸡肉卷+薯条+可乐),这个套餐就是我们要获取的复杂对象,那么程序如何创建出这种对象呢. 我们看到套餐的内容很多是一样的,那么我们是不是可以考虑将创建单个食品(如鸡肉卷.可乐等)方法提取出来,使用单独一个类协调这些食品的组合比

GOF23设计模式之建造者模式(builder)

一.建造者模式概述 建造者模式的本质: 1.分离了对象子组件的单独构造(由Builder负责)和装配(由Director负责).从而可以构造出复杂的对象.这个模式适用于:某个对象的过程复杂的情况下使用. 2.由于实现了构建和装配的解耦.不同的构建器,相同的装配,也可以做出不同的对象:相同的构建器,不同的装配顺序也可以做出不同的对象.也就是实现了构建算法,装配算法的解耦,实现了更好的复用. 二.建造者模式 1.创建飞船部件及飞船 1 /** 2 * 飞船 3 * @author CL 4 * 5

再战设计模式(三)之建造者模式

建造者模式 他的本质主要是: 分离了组件的构造(由builder来负责),和装配(由Director负责),从而构造出复杂的对象,这个模式使用于:某个对象构建过程复杂的情况下使用 建造模式可以将一个产品的内部表象(internal representation)与产品的生产过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象. 由于实现了构建和装配的解耦.不同的构建器和不同的装配器 可以组合成很多不同的对象.也就是实现了构建算法.装配 算法的解耦,实现了更好的复用 场景: 在日常

设计模式之创建型模式—— 1.6 建造者模式

<?php /**  * 1.6 建造者模式  * 定义:  *  将一个复杂对象的构建与它的表示分离  *  ,使得同样的构建过程可以创建不同的  *  表示.  * 此模式包含三种角色:  *  1. 抽象建造者角色  *  职责:  *  用于指定规则和流程  *  2. 具体建造者角色  *  职责:  *  具体的建造过程  *  3. 指挥者角色  *  职责:  *  用于指挥建造过程  *      4. 具体产品角色  *  * 优点:  *  1. 封装性  *  2. 建造