zoukankan      html  css  js  c++  java
  • 面向对象编程设计模式简单工厂模式讲解(历史上最简单明白的例子)

    工作之余,在看资料过程中发现一个极易理解的简单工厂模式的例子,自己亲自试练一番,感觉对这个设计模式不熟悉的朋友,
    一看马上就知道是什么回事了。

    简单工厂模式根据提供给它的数据,返回几个可能类中的一个类的实例。通常它返的类都有一个共同的你类和共同的方法,
    但每个方法执行的任务不同,而且根据不同的数据进行了优化。

    简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。



    下面进行一个代码示例:
       
        public class getName
        {
            private string _fName, _lName;

            public string fName { get; set; }

            public string lName { get; set; }
        }
        定义一个类,返回带有空格在名字中间的人的姓与名
        public class fristName : getName
        {
            public fristName(string name)
            {
                int i=name.Trim().IndexOf(' ');
                if (i > 0)
                {
                    fName = name.Substring(0, i).Trim();
                    lName = name.Substring(i + 1).Trim();
                }
                else
                {
                    fName = name;
                    lName = "";
                }
            }
        }
        定义一个类,返回带有逗号在名字中间的人的姓与名
        public class lastName : getName
        {
            public lastName(string name)
            {
                int i = name.Trim().IndexOf(',');
                if (i > 0)
                {
                    lName = name.Substring(0, i).Trim();
                    fName = name.Substring(i + 1).Trim();
                }
                else
                {
                    lName = name;
                    fName = "";
                }
            }
        }

    下面创建简单的工厂模式的类:
        public class nameFac
        {
            public nameFac()
            { }

            public static getName GetName(string name)
            {
                int i = name.IndexOf(',');
                if (i > 0)
                {
                    return new lastName(name);
                }
                else
                {
                    return new fristName(name);
                }
            }
        }

    通过一个nameFac工厂类把所有的业务流程都耦合在一起。在界面层使用的时候只需代用到工厂类就可以返回结果。
        getName gn = nameFac.GetName("Kelly Chen");
        richTextBox1.Text = gn.fName + "  ,   " + gn.lName;

  • 相关阅读:
    MySQL创建数据库简单命令
    工作的本质是解决问题
    使用消息中间件时,如何保证消息仅仅被消费一次?
    缓存穿透了怎么办?
    MySQL 数据库的提速器-写缓存(Change Buffer)
    删库了,我们一定要跑路吗?
    做好一件事的三要素
    一分钟简单了解 JSON Web Token
    聊一聊 MySQL 中的数据编辑过程中涉及的两阶段提交
    聊一聊 MySQL 数据库中的那些锁
  • 原文地址:https://www.cnblogs.com/whtydn/p/1530282.html
Copyright © 2011-2022 走看看