Simple Factory Pattern 简单工厂模式——《深入浅出设计模式(C#/Java版)》
2009-09-25 10:39
603 查看
最近想学习设计模式,就找了一本书来看,书名:《深入浅出设计模式(C#/Java版)》 莫勇腾 编著。
以下内容就是从该书中摘抄下来的,实例都经过测试了,而且容易理解,特意积累下来。
Simple Factory Pattern(简单工厂模式):专门创建一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。
C#实例1——电子付款系统
输出:
虚拟支票处理中
万事达卡处理中
C#实例2——学校登录系统
输出:
---------------校长登录---------------
First Name:David
Last Name:Smith
User Type:Principal
---------------教师登录---------------
First Name:Patrecia
Last Name:Terry
User Type:Teacher
应用场景:
(1) 工厂类负责创建的对象比较少。
(2) 客户只知道传入工厂类的参数,对于如何创建对象(逻辑)不关心。
以下内容就是从该书中摘抄下来的,实例都经过测试了,而且容易理解,特意积累下来。
Simple Factory Pattern(简单工厂模式):专门创建一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。
C#实例1——电子付款系统
using System; namespace EFT { //抽象电子付款类 abstract class EFT { public abstract void process(); } //具体子类,虚拟检查 class VirtualCheck : EFT { public override void process() { Console.WriteLine("虚拟支票处理中"); } } //具体子类,万事达卡 class MasterCard : EFT { public override void process() { Console.WriteLine("万事达卡处理中"); } } //简单工厂类,创建的实例都有共同的父类EFT class EFTFactory { public EFT createEFT(string type) { switch (type) { case "virtualcheck": return new VirtualCheck(); case "mastercard": return new MasterCard(); default: return null; } } } //客户应用测试 class Client { [STAThread] static void Main(string[] args) { EFT eft; EFTFactory eftFactory = new EFTFactory(); eft = eftFactory.createEFT("virtualcheck"); eft.process(); eft = eftFactory.createEFT("mastercard"); eft.process(); Console.Read();//读取按键才结束程序,方便查看结果 } } }
输出:
虚拟支票处理中
万事达卡处理中
C#实例2——学校登录系统
using System; namespace SchoolSystem { //Base Class 基类 public class SchoolUser { public string FName; public string LName; public string UserType; public void Show() { Console.Write("First Name:" + FName + "/n"); Console.Write("Last Name:" + LName + "/n"); Console.Write("User Type:" + UserType + "/n"); } } //Derived Classes public class SchoolPrincipal : SchoolUser { public SchoolPrincipal() { FName = "David"; LName = "Smith"; UserType = "Principal"; } } public class SchoolTeacher : SchoolUser { public SchoolTeacher() { FName = "Patrecia"; LName = "Terry"; UserType = "Teacher"; } } //简单工厂类 public class SimpleFactory { public SchoolUser GetSchoolUser(string user, string password) { if (user == "Principal" && password == "Principal") { return new SchoolPrincipal(); } if (user == "Teacher" && password == "Teacher") { return new SchoolTeacher(); } return null; } } class Client { static void Main(string[] args) { SimpleFactory sf = new SimpleFactory(); SchoolUser su; su = sf.GetSchoolUser("Principal", "Principal"); Console.Write("---------------校长登录---------------/n"); su.Show(); Console.Write("---------------教师登录---------------/n"); su = sf.GetSchoolUser("Teacher", "Teacher"); su.Show(); Console.Read(); } } }
输出:
---------------校长登录---------------
First Name:David
Last Name:Smith
User Type:Principal
---------------教师登录---------------
First Name:Patrecia
Last Name:Terry
User Type:Teacher
应用场景:
(1) 工厂类负责创建的对象比较少。
(2) 客户只知道传入工厂类的参数,对于如何创建对象(逻辑)不关心。
相关文章推荐
- 简单工厂模式:Simple Factory Pattern(转自阿良.NET)
- Simple Factory Pattern - 简单工厂模式
- 简单工厂模式(Simple Factory Pattern)
- 简单工厂模式-Simple Factory Pattern 工厂三兄弟之简单工厂模式(四):图表库解决方案的改进,简单工厂模式的简化,简单工厂模式总结
- 设计模式简单工厂模式(SimpleFactoryPattern)
- 1.简单工厂模式 Simple Factory Pattern
- 简单工厂模式-Simple Factory Pattern
- 设计模式 简单工厂(simple factory pattern)
- Simple Factory Pattern — 简单工厂模式
- 简单工厂模式(Simple Factory Pattern)
- 简单工厂模式 Simple Factory Pattern
- 简单工厂模式-Simple Factory Pattern 工厂三兄弟之简单工厂模式(二):简单工厂模式概述
- 设计模式笔记4:简单工厂模式(Simple Factory Pattern)
- 设计模式 简单工厂(simple factory pattern)转载
- 简单工厂模式(simple factory pattern)
- 简单工厂设计模式(Simple Factory Design Pattern)
- 23种设计模式之-----简单工厂(静态工厂)模式(SimpleFactory Pattern)
- 简单工厂模式-Simple Factory Pattern 工厂三兄弟之简单工厂模式(三):图表库的简单工厂模式解决方案
- 设计模式最简Demo:简单工厂模式[Simple Factory Pattern]