标签:
一.创建型模式
|
模式名称 |
定 义 |
使用频率 |
学习难度 |
|
简单工厂模式 (Simple Factory Pattern) |
定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类。 |
★★☆☆☆ |
★★★☆☆ |
|
工厂方法模式 (Factory Method Pattern) |
定义一个用于创建对象的接口,但是让子类决定将哪一个类实例化。工厂方法模式让一个类的实例化延迟到其子类。 |
★★☆☆☆ |
★★★★★ |
|
抽象工厂模式 (Abstract Factory Pattern) |
提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。 |
★★★★☆ |
★★★★★ |
|
建造者模式 (Builder Pattern) |
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 |
★★★★☆ |
★★☆☆☆ |
|
原型模式 (Prototype Pattern) |
使用原型实例指定待创建对象的类型,并且通过复制这个原型来创建新的对象。 |
★★★☆☆ |
★★★☆☆ |
|
单例模式 (Singleton Pattern) |
确保一个类只有一个实例,并提供一个全局访问点来访问这个唯一实例。 |
★☆☆☆☆ |
★★★★☆ |
二.简单工厂模式的结构与实现
(一)简单工厂模式的结构
顾客想买奶昔披萨或者培根披萨都会通过工厂来买。如果先实现这个功能的话。
1)第一步先创建窗体

2)第二步创建一个产品的父类
//产品的父类
//使用来了抽象方法关键字是 abstract
public abstract class Pizza
{
public abstract string say();
}
3)第三步创建奶昔披萨的子类
注意:一定要继承父类
public class chees:Pizza
{
public override string say()
{
return "我是奶昔披萨";
}
}
4)第四步创建培根子类
public class pg:Pizza
{
public override string say()
{
return "我是培根披萨";
}
}
5)第五步创建工厂类
//抽象类 工厂
public abstract class Fack
{
//静态 父类
public static Pizza st(string Type)
{
Pizza pizza = null;
switch (Type)
{
case"奶昔披萨":
pizza = new chees();
break;
case "培根披萨":
pizza = new pg();
break;
default:
break;
}
return pizza;
}
}
6)点击主窗体订购按钮写如下代码
private void btOk_Click(object sender, EventArgs e)
{
int num1=Convert.ToInt32( txtLfet.Text);
string oper = cb.Text;
int num2 = Convert.ToInt32(txtRight.Text);
//04.调用工厂的静态方法,传入类型 ,获取返回值
Operator part = Factory.cu(oper);
part.NumLeft = num1;
part.NumRight = num2;
int result = 0;
//05.调用对应父类变量的Calc()完成计算,接收返回值
try
{
result = part.Calc();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
//06.在Label中显示
label1.Text = result.ToString();
}
三.单例模式


标签:
原文地址:http://www.cnblogs.com/yejiaojiao/p/5243279.html