设计模式 Vs实践-1 工厂模式

前言:设计模式在实际项目开发中应用的比较多(可能大部分人都用到了,但是并不知道属于哪种设计模式),一般都是先实现个小功能,然后看需求进行重构

本系列笔记主要把所有设计模式示例代码从新敲一遍,熟悉一下各种设计模式的区别,这样可以在项目设计之初就能确定最好的设计模式。

设计模式主要内容参考
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、运行结果

 

posted @ 2020-03-14 11:13  zhaogaojian  阅读(142)  评论(0编辑  收藏  举报