設計模式C 生成器模式

2021-07-10 23:09:26 字數 1611 閱讀 4167

定義

將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。

生成器(builder)模式是一步步構建乙個複雜的產品,它允許使用者可以只通過指定複雜物件的型別和內容就可以構建它們,使用者不知道內部的具體構建細節。

builder基類建立複雜產品(product)全過程的抽象基類。builder基類提供若干個構造部件(buildpart)的方法(基類提供預設實現)。具體構建產品的過程由concretebuilder實現,getresult()是獲取構造完成後的物件(該方法並不在基類中!因為產品product一般沒有抽象基類。如果產品有抽象基類,getresult就可以放在基類裡)。

director在建構函式中呼叫builder的構造部件方法,當最後乙個部件方法呼叫完成後,就產生了乙個複雜的產品。director的作用是封裝乙個產品的各個部件裝配過程。

builder基類將公共的部分提取出來,各個部件方法(buildpart)由子類擴充套件實現。

director中聚合了builder基類指標,這樣可以適應不同的具體構建者。

1、builder.h

#ifndef _builder_h_

#define _builder_h_

class builders

;class directors

//建造過程

int construct();

};//1#製造者

class builderone:public builders

virtual

void makefun1(int m);

virtual

void makefun2(int m);

virtual

int getresult();

};//2#製造者

class buildertwo:public builders

virtual

void makefun1(int m);

virtual

void makefun2(int m);

virtual

int getresult();

};#endif

2、builder.cpp

#include

"builder.h"

int directors::construct()

void builderone::makefun1(int m)

void builderone::makefun2(int m)

int builderone::getresult()

void buildertwo::makefun1(int m)

void buildertwo::makefun2(int m)

int buildertwo::getresult()

3、client.cpp

#include 

#include

#include "builder.h"

using

namespace

std;

int main()

設計模式 生成器模式

前兩個文章我介紹了工廠方法模式和抽象工廠模式,這次我來講一些生成器模式。生成器模式我也用的比較多。5個建立型模式裡面,我比較喜歡用工廠方法模式,生成器模式和單例模式。意圖將乙個複雜物件的構建與它的表示分開,使得同樣的構建過程可以建立不同的表示。結構圖 一眼看去是不是和抽象工廠模式有點像?是啊,我也覺...

設計模式 生成器模式

封裝乙個產品的構造過程,並允許按步驟構造 需要經過多個步驟建立的物件,如實際生活中的點餐流程,管理系統中的匯出框架等 此處以點餐流程為例 入口 package com.glt.designpattern.builder public class initmain 建造者類 package com.g...

設計模式 生成器模式

定義 將乙個複雜的物件,分成多分,使同樣的構建過程,能有不同的表示,這樣的設計模式被稱為建造者模式。舉例說明 李嘉誠的遺囑執行 財產 產品角色 李嘉誠擁有眾多複雜的財產框架,這裡以現金與物品入例。遺囑 建造者 相當於建造者,分配現金與物品。具體遺囑 具體建造者 1.給大兒子的財產分配,2,給小兒子的...