zoukankan      html  css  js  c++  java
  • 设计模式 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、运行结果

  • 相关阅读:
    加载与隐藏显示
    Task 自我总结认知
    修复SDF数据库引擎C#代码
    Windows防火墙开启后 ping不通了 的解决方案
    C# 串口
    WPF DataGrid中单元格运用Combobox的示例
    组合模式
    适配器模式
    【转载】.net 动态代理
    python数组操作
  • 原文地址:https://www.cnblogs.com/zhaogaojian/p/12491074.html
Copyright © 2011-2022 走看看