设计模式之(Simple Factory Pattern--简单工厂模式)
来源:互联网 发布:淘宝店铺没了怎么退货 编辑:程序博客网 时间:2024/05/16 11:57
定义:专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。简单工厂(Simple Factory)模式又称为静态工厂方法(Static Factory Method)模式,属于类的创建型模式,通常它根据自变量的不同返回不同的类的实例 。
简单的说:简单工厂模式实际是由一个工厂类根据传入的参量,动态决定应该创建哪一个产品的实例。
文字描述实际案例:生产笔的工厂。厂家就是一个简单工厂,根据客户的需求,生产不同的笔(BallPen,fountain pen,lead pencil)。
优缺点:优:外界只需“消费”对象,而不必关心这些对象是如何创建和组织的。缺:当具体产品增多时,对扩展和维护非常不利。
应用情景:1.工厂类负责创建的对象比较少。2.客户只知道传入工厂类的参数,对于如何创建对象不关心。
具体代码:
using System;
namespace PEN
...{
//抽象笔类
abstrat class Pen
...{
public abstract void Process();
}
//具体子类,BallPen
class BallPen:Pen
...{
public override void Process()
...{
Console.WriteLine("Create BallPen.");
}
}
//具体子类,FountainPen
class BallPen:Pen
...{
public override void Process()
...{
Console.WriteLine("Create FountainPen.");
}
}
//简单工厂,PenFactory
class PenFactory
...{
public Pen CreatePen(string PenName)
...{
switch(PenName.ToLower())
...{
case "ballpen": return new BallPen();
case "fountainpen": return new FountainPen();
default: return null;
}
}
}
//客户应用测试
Class Client
...{
[STAThread]
static void Main(string[] args)
...{
Pen pen;
PenFactory penFactory=new PenFactory();
pen=penFactory.CreatePen("BallPen");
pen.Process();
pen=penFactory.CreatePen("FountainPen");
pen.Process();
Console.Read();//读取按键才结束程序,方便查看结果
}
}
}
namespace PEN
...{
//抽象笔类
abstrat class Pen
...{
public abstract void Process();
}
//具体子类,BallPen
class BallPen:Pen
...{
public override void Process()
...{
Console.WriteLine("Create BallPen.");
}
}
//具体子类,FountainPen
class BallPen:Pen
...{
public override void Process()
...{
Console.WriteLine("Create FountainPen.");
}
}
//简单工厂,PenFactory
class PenFactory
...{
public Pen CreatePen(string PenName)
...{
switch(PenName.ToLower())
...{
case "ballpen": return new BallPen();
case "fountainpen": return new FountainPen();
default: return null;
}
}
}
//客户应用测试
Class Client
...{
[STAThread]
static void Main(string[] args)
...{
Pen pen;
PenFactory penFactory=new PenFactory();
pen=penFactory.CreatePen("BallPen");
pen.Process();
pen=penFactory.CreatePen("FountainPen");
pen.Process();
Console.Read();//读取按键才结束程序,方便查看结果
}
}
}
- 设计模式之简单工厂模式(Simple Factory Pattern)
- 设计模式之(Simple Factory Pattern--简单工厂模式)
- JAVA设计模式之 简单工厂模式【Simple Factory Pattern】
- C#设计模式之简单工厂模式(Simple Factory Pattern)
- 设计模式1:Simple Factory Pattern(简单工厂模式)
- 【JAVA设计模式】简单工厂模式(Simple Factory Pattern)
- 设计模式(1):简单工厂模式(Simple Factory Pattern)
- Java设计模式:简单工厂模式(Simple Factory Pattern)
- 简单工厂模式(simple Factory Pattern)
- 简单工厂模式(simple factory pattern)
- 简单工厂模式(Simple Factory Pattern)
- 简单工厂模式(Simple Factory Pattern)
- 简单工厂模式(simple factory pattern)
- 简单工厂模式(Simple Factory Pattern)
- 设计模式之八:简单工厂模式(Simple Factory pattern)
- 设计模式笔记之工厂模式--简单工厂模式(Simple Factory Pattern)
- 简单工厂模式-Simple Factory Pattern 工厂三兄弟之简单工厂模式(一):图表库的设计
- c++设计模式:简单工厂模式(Simple Factory Pattern)
- 最全的 DataGrid使用技巧大杂烩
- 关于CONST的用法
- 2.SIP SERVLET
- 项目组人员管理有感
- Linux那些事儿之我是Hub(14)没完没了的判断
- 设计模式之(Simple Factory Pattern--简单工厂模式)
- IP组播技术及其在视频监控系统中的应用
- My reading schema for next few months
- 基于不定叉树的应用层组播协议
- 关于CONST的用法(2)
- 在SQL中,把字符串装换为日期
- TEXTMETRIC 结构体的一些说明
- 数据寻址和传递
- Batch Files