工厂方法
通过上篇的简单工厂模式来看 它存在一些问题 就是扩展性低 如果后期要添加新的产品 就不得不去 修改简单工厂模式了 然而本文就是来解决此问题的 直接看 简单易懂的代码
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();
}
}
}
浙公网安备 33010602011771号