工业化生产:简单工厂、工厂方法和抽象工厂模式
2009-03-15 10:10
351 查看
假想场景:hp和apple是全球知名的电脑生产厂家,他们各自的电脑操作系统分别是windows和macintosh,microsoft是软件行业的龙头。为了吸引更多客户购买电脑,hp和apple请ms为他们开发两款最常用的软件,办公软件和及时通讯工具。ms结了订单后,分别为hp和apple开发了office和msn。
上面的场景其实蕴含着我们常见的设计模式思维方式,code is cheap,代码来了。
一:简单工厂
using System;
//ms的产品:office
public class Office
{
private string softwareName;
public string SoftwareName
{
get { return softwareName; }
set { softwareName = value; }
}
}
public interface IOffice
{
Office GetOffice();
}
//ms的windows版本Office
public class WinOffice : IOffice
{
public Office GetOffice()
{
return new Office();
}
}
//ms的macintosh版本Office
public class MacOffice : IOffice
{
public Office GetOffice()
{
return new Office();
}
}
//ms的产品:msn
public class Msn
{
private string softwareName;
public string SoftwareName
{
get { return softwareName; }
set { softwareName = value; }
}
}
public interface IMsn
{
Msn GetMsn();
}
//ms的windows版本msn
public class WinMsn:IMsn
{
public Msn GetMsn()
{
return new Msn();
}
}
//ms的macintosh版本msn
public class MacMsn : IMsn
{
public Msn GetMsn()
{
return new Msn();
}
}
interface ISoftwareFactory
{
IOffice CreateOffice();
IMsn CreateMsn();
}
/// <summary>
/// windows版本的工厂
/// </summary>
public class WindowsFactory:ISoftwareFactory
{
public IOffice CreateOffice()
{
return new WinOffice();
}
public IMsn CreateMsn()
{
return new WinMsn();
}
}
/// <summary>
/// macintosh版本的工厂
/// </summary>
public class MacFactory : ISoftwareFactory
{
public IOffice CreateOffice()
{
return new MacOffice();
}
public IMsn CreateMsn()
{
return new MacMsn();
}
}
/// <summary>
/// 客户端调用
/// </summary>
public class Client {
static void Main(string[] args)
{
ISoftwareFactory factory = new WindowsFactory();
IOffice office = factory.CreateOffice();
IMsn msn = factory.CreateMsn();
}
}
上面的场景其实蕴含着我们常见的设计模式思维方式,code is cheap,代码来了。
一:简单工厂
using System;
//ms的产品:office
public class Office
{
private string softwareName;
public string SoftwareName
{
get { return softwareName; }
set { softwareName = value; }
}
}
public interface IOffice
{
Office GetOffice();
}
//ms的windows版本Office
public class WinOffice : IOffice
{
public Office GetOffice()
{
return new Office();
}
}
//ms的macintosh版本Office
public class MacOffice : IOffice
{
public Office GetOffice()
{
return new Office();
}
}
//ms的产品:msn
public class Msn
{
private string softwareName;
public string SoftwareName
{
get { return softwareName; }
set { softwareName = value; }
}
}
public interface IMsn
{
Msn GetMsn();
}
//ms的windows版本msn
public class WinMsn:IMsn
{
public Msn GetMsn()
{
return new Msn();
}
}
//ms的macintosh版本msn
public class MacMsn : IMsn
{
public Msn GetMsn()
{
return new Msn();
}
}
interface ISoftwareFactory
{
IOffice CreateOffice();
IMsn CreateMsn();
}
/// <summary>
/// windows版本的工厂
/// </summary>
public class WindowsFactory:ISoftwareFactory
{
public IOffice CreateOffice()
{
return new WinOffice();
}
public IMsn CreateMsn()
{
return new WinMsn();
}
}
/// <summary>
/// macintosh版本的工厂
/// </summary>
public class MacFactory : ISoftwareFactory
{
public IOffice CreateOffice()
{
return new MacOffice();
}
public IMsn CreateMsn()
{
return new MacMsn();
}
}
/// <summary>
/// 客户端调用
/// </summary>
public class Client {
static void Main(string[] args)
{
ISoftwareFactory factory = new WindowsFactory();
IOffice office = factory.CreateOffice();
IMsn msn = factory.CreateMsn();
}
}
相关文章推荐
- Head First 设计模式学习——简单工厂方法-工厂方法模式-抽象工厂模式
- 简单工厂、工厂方法、抽象工厂模式
- 简单工厂、工厂方法和抽象工厂模式
- 简单工厂和工厂方法以及抽象工厂模式
- [转贴] 简单工厂,工厂方法和抽象工厂模式
- 设计模式(四):从“兵工厂”中探索简单工厂、工厂方法和抽象工厂模式
- 简单工厂,工厂方法和抽象工厂模式
- 设计模式(Python)-简单工厂,工厂方法和抽象工厂模式
- 简单工厂,工厂方法和抽象工厂模式
- 简单工厂,工厂方法和抽象工厂模式 (转)
- 简单工厂、工厂方法与抽象工厂模式对比
- 简单工厂、工厂方法和抽象工厂模式示例
- java工厂模式-简单工厂,工厂方法,抽象工厂模式
- 简单工厂|工厂方法|抽象工厂模式
- 简单工厂、工厂方法、抽象工厂模式
- factory2-简单工厂,工厂方法和抽象工厂模式
- 简单工厂,工厂方法与抽象工厂模式区别与联系(汇总)
- (转载)简单工厂,工厂方法和抽象工厂模式
- 3种工厂模式:简单工厂,工厂方法和抽象工厂模式
- 简单工厂、工厂方法和抽象工厂模式