【设计模式C#】简单工厂模式(用于简化获取对象实例化的复杂性)
一种创建型设计模式。特点:解耦客户端和对象的创建,集中管理对象和易于拓展对象等等,但是由于若往系统里增加对象,则需要修改原有的工厂类,因此不符合开闭原则。
优点:
- 解耦客户端和具体的类;
- 集中管理,所有的对象创建都在工厂中管理和维护;
- 易于扩展,添加新对象时,不需要对客户端代码进行大规模修改;
- 使用简单工厂模式还可以让代码更加清晰。
缺点:
- 违反了单一职责原则,创建对象的逻辑被集中在了一个工厂类中,会导致类的职责过于复杂;
- 引入新的对象时,工厂类需要修改,不符合开闭原则。
适用场景:
- 需要让对象的创建变得简单;
- 不希望客户端关心具体的实现类;
using UnityEngine;public interface IAnimal {void Speak(); }
public class Dog : IAnimal {public void Speak(){Debug.Log("汪汪汪");} }
public class Cat : IAnimal {public void Speak(){Debug.Log("喵喵喵");} }
/// <summary> /// 生成动物的简单工厂 /// </summary> public class AnimalFactory {public static IAnimal CreateAnimal(string animalType){switch (animalType){case "dog":return new Dog();case "cat":return new Cat();default:Debug.Log("工厂中没有这种动物类");return null;}} }
/// <summary> /// 客户端 /// </summary> public class Client {public static void Main(string[] args){IAnimal dog = AnimalFactory.CreateAnimal("dog");dog.Speak();IAnimal cat = AnimalFactory.CreateAnimal("cat");cat.Speak();//创建失败,没有这样的类IAnimal rabbit = AnimalFactory.CreateAnimal("rabbit");rabbit.Speak();} }