偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

理解軟件設(shè)計模式中的建造者模式

開發(fā) 項目管理
設(shè)計模式是很多程序員關(guān)注的焦點,今天我們就來介紹軟件設(shè)計模式中的建造者模式。

  4個角色:指揮者(Director),建造者(Builder),具體建造者(ConcreteBuilder),產(chǎn)品(Product)

  產(chǎn)品:需要創(chuàng)建的對象產(chǎn)品

  具體建造者:創(chuàng)建產(chǎn)品的實例并且實現(xiàn)建造者多個方法對產(chǎn)品進行裝配

  建造者:本質(zhì)為抽象類,里面的抽象方法供具體建造者重寫,聲明產(chǎn)品的引用

  指揮者:調(diào)用建造者抽象類以及其方法

  實現(xiàn)思路:客戶端創(chuàng)建一個指揮者,并且實例化需要的產(chǎn)品的具體建造者,然后指揮者調(diào)用具體建造者的實例即將產(chǎn)品生產(chǎn)出來。

  類圖:

  

  應(yīng)用場景:在Silverlight中我們需要生產(chǎn)一列多行的輸入框+TextBlock的組合,但是這些輸入框的類型不同,有一些只能輸入256個字符,有的只能輸入20個字符,還有的是多行的,有的是單行的輸入框。這些輸入框的種類是固定的,但是可能用戶自定義輸入框的時候我們生成的順序和各自的生成數(shù)量不知道。

  分析:在這里產(chǎn)品是固定的,有A,B,C,D,E,F六種輸入框+TextBlock,用戶可能生成的情況是A,A,C,C,B,B,C、也可能是B,C,D,B,C,F。這里我們使用建造者模式,這幾種輸入框基本上都差不多,都是TextBlock+TextBox的模式。但是可輸入數(shù)量和是否多行是不定的,那么我們實現(xiàn)AConcreteBuilder,BConcreteBuilder,CConcreteBuilder,DConcreteBuilder,

EConcreteBuilder,FConcreteBuilder等多個具體建造者,然后對于建造者中只需要兩個方法分別實例化產(chǎn)品,并且對產(chǎn)品的屬性(可輸入字符數(shù)、是否可多行)進行設(shè)置,然后再用戶需要調(diào)用什么產(chǎn)品的時候,使用指揮者調(diào)用想要的ConcreteBuilder具體建造者即可。

  下面我們以一個電腦產(chǎn)品生產(chǎn)的實例來具體看看Builder Pattern是如何使用的:

一、產(chǎn)品角色

  1. //產(chǎn)品  
  2.   classComputer  
  3. {privatestringm_CompName;privatestringm_MemorySize;privatestringm_DiskSize;///<summary>  
  4.   ///電腦名稱///</summary>  
  5.   publicstringCompName  
  6.   {get{ returnm_CompName; }set{ m_CompName =value; }  
  7.   }///<summary>  
  8.   ///內(nèi)存大小///</summary>  
  9.   publicstringMemorySize  
  10.   {get{ returnm_MemorySize; }set{ m_MemorySize =value; }  
  11.   }///<summary>  
  12.   ///硬盤大小///</summary>  
  13.   publicstringDiskSize  
  14.   {get{ returnm_DiskSize; }set{ m_DiskSize =value; }  
  15.   }///<summary>  
  16.   ///顯示產(chǎn)品的信息///</summary>  
  17.   publicvoidShowComputerInfo()  
  18.   {  
  19.   Console.WriteLine("------------------------");  
  20.   Console.WriteLine("電腦名稱:"+CompName);  
  21.   Console.WriteLine("內(nèi)存大?。?quot;+MemorySize);  
  22.   Console.WriteLine("硬盤大?。?quot;+DiskSize);  
  23.   }  
  24.   } 

二、建造者角色

  1.   //建造者 定義建造產(chǎn)品的抽象方法和產(chǎn)品的引用  
  2.   abstractclassComputerBuilder  
  3.   {privateComputer computerInstance;///<summary>  
  4.   ///返回建立的電腦產(chǎn)品實例///</summary>  
  5.   publicComputer ComputerInstance  
  6.   {get{ returncomputerInstance; }set{ computerInstance=value; }  
  7.   }///<summary>  
  8.   ///創(chuàng)建電腦名稱///</summary>  
  9.   abstractpublicvoidCreateCompName();///<summary>  
  10.   ///創(chuàng)建電腦內(nèi)存///</summary>  
  11.   abstractpublicvoidCreateCompMemory();///<summary>  
  12.   ///創(chuàng)建電腦硬盤///</summary>  
  13.   abstractpublicvoidCreateCompDisk();  
  14.   } 

三、具體建造者角色

  1.   //具體建造者創(chuàng)建蘋果電腦  
  2.   classAppleConcreteBuilder : ComputerBuilder  
  3.   {publicoverridevoidCreateCompName()  
  4.   {  
  5.   ComputerInstance =newComputer();  
  6.   ComputerInstance.CompName ="蘋果電腦"}publicoverridevoidCreateCompMemory()  
  7.   {  
  8.   ComputerInstance.MemorySize ="4G"}publicoverridevoidCreateCompDisk()  
  9.   {  
  10.   ComputerInstance.DiskSize ="500G"}  
  11.   }//具體建造者創(chuàng)建戴爾電腦  
  12.   classDellConcreteBuilder : ComputerBuilder  
  13.   {publicoverridevoidCreateCompName()  
  14.   {  
  15.   ComputerInstance =newComputer();  
  16.   ComputerInstance.CompName ="戴爾電腦"}publicoverridevoidCreateCompMemory()  
  17.   {  
  18.   ComputerInstance.MemorySize ="2GB"}publicoverridevoidCreateCompDisk()  
  19.   {  
  20.   ComputerInstance.DiskSize ="320GB"}  
  21.   }//具體建造者創(chuàng)建惠普電腦  
  22.   classHpConcreteBuilder : ComputerBuilder  
  23.   {publicoverridevoidCreateCompName()  
  24.   {  
  25.   ComputerInstance =newComputer();  
  26.   ComputerInstance.CompName ="惠普電腦"}publicoverridevoidCreateCompMemory()  
  27.   {  
  28.   ComputerInstance.MemorySize ="1GB"}publicoverridevoidCreateCompDisk()  
  29.   {  
  30.   ComputerInstance.DiskSize ="160GB"}  
  31.   }//具體建造者創(chuàng)建IBM電腦  
  32.   classIBMConcreteBuilder : ComputerBuilder  
  33.   {publicoverridevoidCreateCompName()  
  34.   {  
  35.   ComputerInstance =newComputer();  
  36.   ComputerInstance.CompName ="IBM電腦"}publicoverridevoidCreateCompMemory()  
  37.   {  
  38.   ComputerInstance.MemorySize ="2G"}publicoverridevoidCreateCompDisk()  
  39.   {  
  40.   ComputerInstance.DiskSize ="1000G"}  
  41.   } 

四、指揮者角色

  1.   //指揮者  
  2.   classCreateDirector  
  3.   {///<summary>  
  4.   ///調(diào)用建造者抽象方法以生產(chǎn)產(chǎn)品///</summary>  
  5.   ///<param name="compBuilder"></param>  
  6.   publicvoidCreateComputer(ComputerBuilder compBuilder)  
  7.   {  
  8.   compBuilder.CreateCompName();  
  9.   compBuilder.CreateCompMemory();  
  10.   compBuilder.CreateCompDisk();  
  11.   }  
  12.  } 

如需源碼請點擊 BuilderPattern.zip下載。

原文鏈接:http://www.cnblogs.com/chengxingliang/archive/2011/07/14/2105119.html

【編輯推薦】

  1. 新手軟件項目經(jīng)理該如何入門
  2. 項目經(jīng)理的力量應(yīng)該從哪里來?
  3. 當你從程序員變?yōu)轫椖拷?jīng)理
  4. 軟件測試項目為什么會失敗
  5. 項目管理之CVS與SVN日常使用總結(jié)

 

責任編輯:彭凡 來源: 博客園
相關(guān)推薦

2019-08-12 14:45:50

軟件設(shè)計Java

2021-04-14 09:02:22

模式 設(shè)計建造者

2020-10-20 13:33:00

建造者模式

2021-10-26 00:21:19

設(shè)計模式建造者

2021-01-21 05:34:14

設(shè)計模式建造者

2024-02-19 08:38:34

建造者模式Android設(shè)計模式

2010-08-11 09:15:07

設(shè)計模式Python

2012-12-25 09:38:41

JavaScript設(shè)計模式

2022-11-01 15:25:01

構(gòu)建者模式Go 語言

2022-09-19 06:25:14

設(shè)計模式GoF

2023-10-19 13:43:00

設(shè)計模式軟件設(shè)計

2013-06-07 11:31:36

面向?qū)ο?/a>設(shè)計模式

2021-06-10 19:09:05

模式代碼建造者

2021-05-11 08:54:59

建造者模式設(shè)計

2025-04-25 08:23:20

2011-07-21 14:33:02

設(shè)計模式

2020-11-05 09:38:07

中介者模式

2023-05-26 08:41:23

模式Go設(shè)計模式

2021-07-28 10:02:54

建造者模式代碼

2020-12-01 07:16:05

重學設(shè)計模式
點贊
收藏

51CTO技術(shù)棧公眾號