zoukankan      html  css  js  c++  java
  • C#设计模式——简单工厂模式

    一、简单工厂模式介绍:

     简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。

    二、背景:

    我们日常编程中,当使用new一个对象时,此时该类就依赖与这个对象,也就是他们之间的耦合度高,当需求变化时,我们不得不去修改此类的源码,此时我们可以运用简单工厂模式来解决这个问题。

    三、情景例子:

    现实生活中,我们买笔记本电脑基本都是去电器店去购买,我们想要什么品牌的只要和销售员说他们就会拿给我们,这就是现实生活中一个简单工厂的例子。所有的笔记本电器店都有,电器店相当于一个简单的工厂父类,每个笔记本品牌就是继承于他的子类,当我们需要买笔记本也就是相当于要new一个笔记本类时,我们就可以直接到电器店去购买,也就是通过电器店工厂父类去new我们所需要的笔记本子类。这样子我们就降低了依赖子类对象,我们要用到子类也只需通过工厂类去创建。

    四、代码实现:

    1、抽象出父类(笔记本类),这里直接抽象出笔记本这个父类更方便理解,相当于上述情景中的电器店。

        public abstract class NoteBook
        {
            public abstract void SayHello();
        }

     2、各子类继承于父类(联想品牌和IBM品牌)

        public class Lenovo : NoteBook
        {
            public override void SayHello()
            {
                Console.WriteLine("我是联想笔记本,你联想也别想");
            }
        }
        public class IBM : NoteBook
        {
            public override void SayHello()
            {
                Console.WriteLine("我是IBM笔记本");
            }
        }

     3、调用时子类赋值给父类

           static void Main(string[] args)
            {
                Console.WriteLine("请输入你想要的笔记本品牌");
                string brand = Console.ReadLine();
                NoteBook nb = GetNoteBook(brand);
                nb.SayHello();
                Console.ReadKey();
            }
    
            public static NoteBook GetNoteBook(string brand)
            {
                NoteBook nb = null;
                switch (brand)
                {
                    case "Lenovo": nb = new Lenovo(); break;
                    case "IBM": nb = new IBM(); break;
                }
                return nb;
            }

     五、总结:

    简单工厂模式只是把变化移到了工厂类中罢了,没有变化的问题,因为如果我们想要新的笔记本品牌时,此时我们还是需要修改工厂类中的方法,也就是多加case语句。这个就是简单工厂模式的缺点所在,而且不止这点,工厂类一旦不能正常工作,整个系统都会受到影响。

    然而,简单工厂模式与之前的实现也有它的优点:

    1、简单工厂模式解决了客户端直接依赖于具体对象的问题,客户端可以消除直接创建对象的责任,而仅仅是消费产品。简单工厂模式实现了对责任的分割。

    2、简单工厂模式也起到了代码复用的作用,去购买笔记本的所有人只需要负责消费就可以了,并不需要在自己类中实现,此时简单工厂的方法就让所有客户共用了。

  • 相关阅读:
    Django 项目试炼blog(8) -- 评论树的显示
    Django 项目试炼blog(7) -- 文章详情页2 -- 前端样式的继承与楼评论显示
    Django 项目试炼blog(6) -- 文章详情页1 -- 点赞功能
    Django 项目试炼blog(5) -- 个人站点的搭建
    Django 项目试炼blog(4)--blog主页的搭建以及admin的使用
    Django 项目试炼blog(3)--基于Form组件ajax用户注册
    Django 项目试炼blog(2)--用户登陆验证
    Django 项目试炼blog(1)
    Django 基于form与ajax发送文件
    Django 分页器制作
  • 原文地址:https://www.cnblogs.com/jiechou/p/9053993.html
Copyright © 2011-2022 走看看