C#之设计模式:工厂模式
设计模式总原则:开闭原则(对扩展开放,对修改关闭)
1.单一职责原则:每个类有单一的职责,如若不然就要把类拆分。
2.里氏替换原则:开闭原则是实现抽象化,而里氏替换原则是抽象化的具体实现。
3.依赖倒转原则:是开闭原则的基础,面向接口编程,依赖抽象而不是依赖具体。
4.接口隔离原则:使用多个隔离的接口,比使用单个更好。
5.迪米克原则:无论被依赖的类有多么复杂,都应该将逻辑封装到方法内部,提供给外部访问。
设计模式分类:
创建型模式:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式
结构型模式:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式、MVC
行为型模式:策略模式、模板方法模式、观察者模式、迭代器模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式
并发型模式、线程池模式
工厂模式
工厂类是负责创建其他实例的类,可以根据参数创建不同类的实例。
简单工厂模式: 有一个核心工厂有CreateProduct的方法,根据传入的参数创建不同的实例。
特点:又叫静态工厂方法。只生产一种品牌的产品,且在工厂中动态的创建。要扩展产品类型,需要修改工厂类。
![](https://img2020.cnblogs.com/blog/1190502/202201/1190502-20220104115047033-287707130.png)
工厂模式: 定义一个用于创建对象的接口,让子类决定实例化哪个类。让具体的工厂去生产具体的类。
新增一个产品必须要新增一个与其对应的工厂类,每一个具体工厂都负责生产一种对应的具体产品。并且所有的这些产品都属于同一大类。
和简单工厂相比,工厂方法将生成具体产品的任务交给了具体的产品工厂。
特点:生产产品在子类中进行,可以生产多个品牌的产品。
![](https://img2020.cnblogs.com/blog/1190502/202201/1190502-20220104115109332-1802348973.png)
抽象工厂模式:一个具体的工厂类可以生产多个大类,也就是一个超级工厂管理其他的工厂。
在工厂模式的基础上增加创建产品的接口,在具体子工厂中实现产品创建。
特点:生产模式是一样的,可以生产多个类型多个品牌的产品。
![](https://img2020.cnblogs.com/blog/1190502/202201/1190502-20220104115125817-4641181.png)