前言:设计模式在实际项目开发中应用的比较多(可能大部分人都用到了,但是并不知道属于哪种设计模式),一般都是先实现个小功能,然后看需求进行重构
本系列笔记主要把所有设计模式示例代码从新敲一遍,熟悉一下各种设计模式的区别,这样可以在项目设计之初就能确定最好的设计模式。
设计模式主要内容参考
https://www.runoob.com/design-pattern/factory-pattern.html
及大话设计模式中讲解
主要分为三大类
创建型模式、结构型模式、行为型模式
创建型模式:解决对象对象的创建问题
结构型模式:对象的组成以及对象之间的依赖关系
行为型模式:对象行为设计提高协作效率
从工厂模式开始学习
1、工厂模式(Factory Pattern)是 最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。
2、假如现在已经有了一个画矩形的类
class Rectangle { public void draw() { Console.WriteLine("Inside Rectangle::draw() method."); } }
3、提取接口
namespace FactoryPattern { internal interface IShape { void draw(); } class Rectangle : IShape { public void draw() { Console.WriteLine("Inside Rectangle::draw() method."); } } }
4、创建一个Circle类,接口为IShape
这里可以使用拷贝类
class Circle : IShape { public void draw() { Console.WriteLine("Inside Circle::draw() method."); } }
5、创建一个ShapeFactory
//使用 getShape 方法获取形状类型的对象 public IShape getShape(String shapeType) { if (shapeType == null) { return null; } if (shapeType.Equals("CIRCLE")) { return new Circle(); } else if (shapeType.Equals("RECTANGLE")) { return new Rectangle(); } return null; }
6、使用Factory如下
static void Main(string[] args) { ShapeFactory shapeFactory = new ShapeFactory(); shapeFactory.getShape("CIRCLE").draw(); shapeFactory.getShape("RECTANGLE").draw(); Console.ReadKey(); }
7、运行结果