您的位置:首页 > 其它

工业化生产:简单工厂、工厂方法和抽象工厂模式

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();

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: