设计模式inC#系列[2] Abstract Factory 抽象工厂
来源:互联网 发布:scar处女座数据 编辑:程序博客网 时间:2024/06/06 08:36
Abstract Factory 抽象工厂
Client :调用抽象工厂
MailFactory :包含了具体的工厂类
- MailMailFactory :具体的工厂类1 - MailMail:具体工厂类生成的具体实例1
- ClanInvitationFactory: 具体的工厂类2 - ClanInvitation:具体工厂类生成的具体实例
MailMail 和ClanInvitation均继承Mail
决定使用哪一个具体的工厂类就决定了将要生成什么类。
Client :调用抽象工厂
MailFactory :包含了具体的工厂类
- MailMailFactory :具体的工厂类1 - MailMail:具体工厂类生成的具体实例1
- ClanInvitationFactory: 具体的工厂类2 - ClanInvitation:具体工厂类生成的具体实例
MailMail 和ClanInvitation均继承Mail
决定使用哪一个具体的工厂类就决定了将要生成什么类。
using System;
using System.Collections.Generic;
using System.Text;
namespace AbstractFactory
{
class Program
{
static void Main(string[] args)
{
MailFactory factory = MailFactory.GetMailFactory(MailType.Mail);
Mail newMail = factory.CreateMail();
}
}
abstract class MailFactory
{
public static MailFactory GetMailFactory(MailType type)
{
if (type == MailType.Mail)
{
return new MailMailFactory();
}
else
{
return new ClanInvitationFactory();
}
}
public abstract Mail CreateMail();
}
class MailMailFactory : MailFactory
{
public override Mail CreateMail()
{
return new MailMail();
}
}
class ClanInvitationFactory : MailFactory
{
public override Mail CreateMail()
{
return new ClanInvitation();
}
}
class Mail
{
public string MailID;
}
class MailMail : Mail
{
}
class ClanInvitation : Mail
{
}
enum MailType
{
Mail, ClanInvitation
}
}
using System.Collections.Generic;
using System.Text;
namespace AbstractFactory
{
class Program
{
static void Main(string[] args)
{
MailFactory factory = MailFactory.GetMailFactory(MailType.Mail);
Mail newMail = factory.CreateMail();
}
}
abstract class MailFactory
{
public static MailFactory GetMailFactory(MailType type)
{
if (type == MailType.Mail)
{
return new MailMailFactory();
}
else
{
return new ClanInvitationFactory();
}
}
public abstract Mail CreateMail();
}
class MailMailFactory : MailFactory
{
public override Mail CreateMail()
{
return new MailMail();
}
}
class ClanInvitationFactory : MailFactory
{
public override Mail CreateMail()
{
return new ClanInvitation();
}
}
class Mail
{
public string MailID;
}
class MailMail : Mail
{
}
class ClanInvitation : Mail
{
}
enum MailType
{
Mail, ClanInvitation
}
}
- 设计模式inC#系列[2] Abstract Factory 抽象工厂
- 设计模式(2)- 抽象工厂(Abstract Factory)
- 设计模式-抽象工厂模式(Abstract Factory)
- 设计模式:抽象工厂模式(Abstract Factory)
- java设计模式2--抽象工厂模式(Abstract Factory)
- .NET设计模式(2):1.2 抽象工厂模式(Abstract Factory)
- 设计模式(2)-抽象工厂模式(Abstract Factory)
- Abstract Factory 抽象工厂设计模式
- Abstract Factory 抽象工厂设计模式
- 抽象工厂(Abstract Factory)设计模式
- 设计模式学习-抽象工厂(Abstract Factory)
- 设计模式-抽象工厂(Abstract Factory)
- 设计模式之一:Abstract Factory 抽象工厂
- 【设计模式】之 Abstract Factory 抽象工厂
- 抽象工厂(Abstract Factory)设计模式
- 设计模式之:抽象工厂(Abstract Factory)
- 深入浅出设计模式 ------ Abstract Factory(抽象工厂)
- Abstract Factory 抽象工厂设计模式
- 众名家谈程序员职业规划 (转转)
- 在Spring框架中配置和使用jdbcldap开源驱动
- Linux内核的等待队列
- 怎么使用iconv来解决ajax用post传递过去出现的乱码
- 一个爱国者,几句不得不说的肺腹之言!
- 设计模式inC#系列[2] Abstract Factory 抽象工厂
- SQL分页的存储过程详解
- 【From Hailer】历届图灵奖获得者最新名单
- J2EE下使用AJAX(二) Prototype封装
- 使用枚举类型
- jQuery工作原理解析以及源代码示例
- ArrayList-asp.net入门笔记
- 德语版 Wikipedia 即将出书
- 阿里巴巴是最好的客户关系管理实践者