抽象工廠是一種建立型的模式,它為我們建立物件提供了有效地方法,我們不用直接new物件而是可以為建立物件配置乙個介面,該介面定義了如何建立物件的方法。我們還知道抽象工廠建立的物件是乙個系列的或者是一族的。該模式的最大特點就是將它的具體建立的任務交給了他的子類也就是具體的類,因此我們將建立物件的時間延遲到了它的子類。
下面使用c#**說明:
三個子類:perennialgarden、annualgarden、veggiegarden
perennialgarden:
using system;
namespace gardener}}
annualgarden:
using system;
using system.drawing ;
namespace gardener}}
veggiegarden:
using system;
namespace gardener}}
代表抽象工廠類為plant類,其實現**為:
using system;
using system.drawing;
namespace gardener
//-------------
public void draw(graphics g, int x, int y) }}
代表操作類為garden類,其實現**為:
using system;
using system.drawing ;
namespace gardener
public void setborder()
public void setshade()
//draw each plant
public void draw(graphics g) }}
測試型別為我inform,型別為form1,其實現**為:
using system;
using system.drawing;
using system.collections;
using system.componentmodel;
using system.windows.forms;
using system.data;
namespace gardener
public form1()
/// clean up any resources being used.
///
protected override void dispose( bool disposing )
}base.dispose( disposing );
}#region windows form designer generated code
///
/// required method for designer support - do not modify
/// the contents of this method with the code editor.
///
private void initializecomponent()
);this.groupbox1.location = new system.drawing.point(8, 40);
this.groupbox1.name = "groupbox1";
this.groupbox1.size = new system.drawing.size(120, 120);
this.groupbox1.tabindex = 0;
this.groupbox1.tabstop = false;
this.groupbox1.text = "garden type";
// // opperennial
// this.opperennial.location = new system.drawing.point(16, 72);
this.opperennial.name = "opperennial";
this.opperennial.size = new system.drawing.size(80, 16);
this.opperennial.tabindex = 2;
this.opperennial.text = "perennial";
this.opperennial.checkedchanged += new system.eventhandler(this.opperennial_checkedchanged);
// // opannual
// this.opannual.location = new system.drawing.point(16, 24);
this.opannual.name = "opannual";
this.opannual.size = new system.drawing.size(88, 16);
this.opannual.tabindex = 0;
this.opannual.text = "annual";
this.opannual.checkedchanged += new system.eventhandler(this.opannual_checkedchanged);
// // form1
// this.autoscalebasesize = new system.drawing.size(5, 13);
this.clientsize = new system.drawing.size(368, 237);
this.controls.addrange(new system.windows.forms.control );
this.name = "form1";
this.text = "garden planner";
this.groupbox1.resumelayout(false);
this.resumelayout(false);
}#endregion
///
[stathread]
static void main()
private void opannual_checkedchanged(object sender, eventargs e)
//-----
private void opvegetable_checkedchanged(object sender, eventargs e)
//-----
private void opperennial_checkedchanged(object sender, eventargs e)
//-----
private void setgarden(garden gd)
private void ckcenter_checkedchanged(object sender, system.eventargs e)
//-----
private void ckborder_checkedchanged(object sender, system.eventargs e)
//-----
private void ckshade_checkedchanged(object sender, system.eventargs e) }}
C設計模式,C 設計模式解說文件
個人引用了知乎上面一位的回答 遂感覺暫時沒有接觸設計模式的必要,於是將手頭上的資源寫成部落格權當收藏 學習設計模式的乙個弊端是 我們學習的時候看到的只是結果,並不了解過程和動機,也就是其他人在什麼樣的情況下做出這樣的設計,而這個恰恰是各種教程 資料上學習不到的。我自己在經歷了2年的應用設計模式的摸索...
C 設計模式
c 設計模式大體上講分為三類,即 建立模式,結構模式和行為模式 建立模式 單例模式 工廠模式 抽象工廠模式 生成器模式 原型模式。結構模式 介面卡模式 橋接模式 組成模式 裝飾模式 外觀模式 享元模式 模式。行為模式 中介者模式 命令模式 備忘錄模式 狀態模式 策略模式 直譯器模式 迭代器模式 觀察...
C 設計模式
c 設計模式 課程目標 理解松耦合設計思想 掌握物件導向設計原則 掌握重構技法改善設計 掌握gof 核心設計模式 什麼事設計模式 每乙個模式描述了乙個在我們周圍不斷重 生的問題以及該問題的解決方案的核心。這樣,你就能一次又一次的 使用該方案而不必做重複勞動 gof設計模式 歷史性著作 設計模式 可復...