日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

设计模式—生成器模式(建造者模式)

發布時間:2023/12/31 asp.net 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 设计模式—生成器模式(建造者模式) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

生成器模式是一種創建型設計模式,它把對象的創建步驟抽象成生成器,并且可以通過指導類(director)對所有生成步驟的先后順序進行控制。客戶端使用指導類并傳入相應的生成器,通過指導類的接口便可以得到相應的對象。

以我的理解看,生成器模式中的生成器被用來對生成對象的每一個步驟自身進行控制,比如要產生一輛汽車(最終對象),那么玻璃是用普通玻璃還是防彈玻璃(生成最終對象的一個步驟)。而指導類主要用來設置各個步驟之間的次序與取舍,比如先安裝門還是先安裝玻璃,要不要安裝座墊加熱。

生成器模式與抽象工廠模式看起來很像,其實有很多不同。首先抽象工廠模式更注重于“系列”,即要創建的產品族分為不同的系列,同一系列中的產品是固定的,創建的步驟也是固定的。而生成器模式的重點在于對創建過程中每一個步驟的精細控制以及步驟間次序的控制,這些在抽象工廠模式中是不方便進行控制的(甚至需要修改或創建新的工廠抽象類)。

下面以一輛汽車的生產為例。

首先是汽車類:

interface CarPlan {void setWheel(String wheel);void setFrame(String frame);void setEngine(String engine);void setWidget(String widget); }class Car implements CarPlan {private String myWheel;private String myFrame;private String myEngine;private String myWidget;void setWheel(String wheel) {myWheel = wheel;}void setFrame(String frame) {myFrame = frame;}void setEngine(String engine) {myEngine = engine;}void setWidget(String widget) {myWidget = widgetl} }

然后創建生成器:

interface Builder {void buildWheel();void buildFrame();void buildEngine();void buildWidget();Car getCar(); } //一個廉價車生成器 class CheapBuilder implements Builder {Car cheapCar = new Car();Car getCar() {return cheapCar;}void buildWheel() {cheapCar.setWheel("cheap wheel");}void buildFrame() {cheapCar.setFrame("cheap frame");}void buildEngine() {cheapCar.setEngine("cheap engine");}void buildWidget() {cheapCar.setWidget("no widget");} } //一個平價車生成器 class EconomicBuilder implements Builder {Car economicCar = new Car();Car getCar() {return economicCar;}void buildWheel() {cheapCar.setWheel("cheap wheel");}void buildFrame() {cheapCar.setFrame("expensive frame");}void buildEngine() {cheapCar.setEngine("cheap engine");}void buildWidget() {cheapCar.setWidget("economic widget");} }

創建指導類:

class Director {private Builder builder;director(Builder bld) {builder = bld;}void produceCar() {//這里對步驟進行控制builder.buildFrame();builder.buildWidget();builder.buildWheel();builder.buildEngine();}Car getCar() {builder.getCar();} }

客戶端使用:

public class Test {public static void main(String[] args) {Builder bld = new EconomicBuilder();Director director = new Director(bld);director.produceCar();Car car = director.getCar(); }

總結

以上是生活随笔為你收集整理的设计模式—生成器模式(建造者模式)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。