工厂方法

 通过上篇的简单工厂模式来看  它存在一些问题  就是扩展性低  如果后期要添加新的产品 就不得不去 修改简单工厂模式了 然而本文就是来解决此问题的 直接看 简单易懂的代码

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

namespace 工厂方法
{
class Program
{
static void Main(string[] args)
{
//创建狗 1 先找到创建狗的工厂(new一个)
AnimalCreator Dogcreator = new DogFactory();
//让厂子给你创建一个狗
Animal dog = Dogcreator.CreateAnimalFactory();
//狗出来了
dog.PrintAnimal();
Console.ReadKey();

}
}
/// <summary>
/// 定义一个抽象类
/// </summary>
public abstract class Animal
{
//输出创建什么动物
public abstract void PrintAnimal();
}

//动物 狗类
public class Dog : Animal
{
public override void PrintAnimal()
{
Console.WriteLine("狗出来了,正在汪汪叫");
}
}

//动物 鸽子
public class Dove : Animal
{
public override void PrintAnimal()
{
Console.WriteLine("鸽子出来了,正在飞");
}
}

//动物 鱼
public class Fish:Animal
{
public override void PrintAnimal()
{
Console.WriteLine("鱼出来了,正在游");
}
}

/// <summary>
/// 抽象工厂类
/// </summary>
public abstract class AnimalCreator
{
//工厂方法
public abstract Animal CreateAnimalFactory();
}

/// <summary>
/// 创建动物的工厂
/// </summary>
public class DogFactory : AnimalCreator
{
public override Animal CreateAnimalFactory()
{
return new Dog();
}
}
/// <summary>
/// 创建鸽子的工厂
/// </summary>
public class DoveFactory : AnimalCreator
{
public override Animal CreateAnimalFactory()
{
return new Dove();
}
}

/// <summary>
/// 创建鱼的工厂
/// </summary>
public class FishFactory : AnimalCreator
{
public override Animal CreateAnimalFactory()
{
return new Fish();
}
}


}

posted on 2017-05-03 10:59  阿晟哥  阅读(418)  评论(0)    收藏  举报