GOF模式根据准则分类:
(1)Creational:创建性
(2)Structural:结构型
(3) Behavioral:行为型
根据范围分类:
(1)类模式:处理父类与子类
(2)对象模式
一 简单工厂模式
由一个工厂类根据传入的参量,动态决定应该创建哪一个产品类底实例。
public class Garden {
protected Plant center, shade, border;
protected bool showCenter, showShade, showBorder;
//select which ones to display
public void setCenter() {showCenter = true;}
public void setBorder() {showBorder =true;}
public void setShade() {showShade =true;}
//draw each plant
public void draw(Graphics g) {
if (showCenter) center.draw (g, 100, 100);
if (showShade) shade.draw (g, 10, 50);
if (showBorder) border.draw (g, 50, 150);
}
}
public class PerennialGarden : Garden
{
public PerennialGarden() {
shade = new Plant("Astilbe");
border = new Plant ("Dicentrum");
center = new Plant ("Sedum");
}
}
public class Plant {
private string name;
private Brush br;
private Font font;
public Plant(string pname) {
name = pname; //save name
font = new Font ("Arial", 12);
br = new SolidBrush (Color.Black );
}
//-------------
public void draw(Graphics g, int x, int y) {
g.DrawString (name, font, br, x, y);
}
}