您的位置:首页 > 编程语言 > C#

c#设计模式==工厂方法模式

2017-04-25 23:07 295 查看
  工厂方法模式,定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法模式是一个类的实例化延迟到了其子类。



工厂方法模式在简单工厂模式的基础上进行了改进,将简单工厂方法中工厂的判断进行了改进,工厂方法模式在增加一个分支的时候不用再对原有的类进行修改了,而是可以直接增加一个子类,对客户端来说只需要知道一个工厂抽象类和一个抽象的志愿者类,于是便可以实例化不同的志愿者对象。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 工厂方法模式
{
class Program
{
static void Main(string[] args)
{
Factory fact = new LeiFactory();
Volunteer lei = fact.getvol();
lei.cook();
lei.sweep();
lei.wash();

fact = new UniFactory();
lei = fact.getvol();
lei.cook();
lei.sweep();
lei.wash();
}
}
}

abstract class Volunteer
{
public abstract void sweep();
public abstract void cook();
public abstract void wash();
}

class Leifeng : Volunteer
{
public override void sweep()
{
Console.WriteLine("雷锋扫地");
}
public override void cook()
{
Console.WriteLine("雷锋煮饭");
}
public override void wash()
{
Console.WriteLine("雷锋洗衣");
}
}

class Universtity : Volunteer
{
public override void sweep()
{
Console.WriteLine("大学生志愿者扫地");
}
public override void cook()
{
Console.WriteLine("大学生志愿者煮饭");
}
public override void wash()
{
Console.WriteLine("大学生志愿者洗衣");
}
}

abstract class Factory
{
public abstract Volunteer getvol();
}

class LeiFactory : Factory
{
public override Volunteer getvol()
{
return (new Leifeng());
}
}

class UniFactory : Factory
{
public override Volunteer getvol()
{
return (new Universtity());
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: