WEB开发网
开发学院软件开发C语言 面向对象编程设计模式--简单工厂模式讲解 阅读

面向对象编程设计模式--简单工厂模式讲解

 2009-07-24 20:49:28 来源:WEB开发网   
核心提示:工作之余,在看资料过程中发现一个极易理解的简单工厂模式的例子,面向对象编程设计模式--简单工厂模式讲解,自己亲自试练一番,感觉对这个设计模式不熟悉的朋友,一看马上就知道是什么回事了,返回带有空格在名字中间的人的姓与名 public class fristName : getName { public fristName

工作之余,在看资料过程中发现一个极易理解的简单工厂模式的例子,自己亲自试练一番,感觉对这个设计模式不熟悉的朋友,

一看马上就知道是什么回事了。

简单工厂模式根据提供给它的数据,返回几个可能类中的一个类的实例。通常它返的类都有一个共同的你类和共同的方法,

但每个方法执行的任务不同,而且根据不同的数据进行了优化。

简单工厂模式是属于创建型模式,又叫做静态工厂方法(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;

出处:http://www.cnblogs.com/whtydn/archive/2009/07/24/1530282.html

Tags:面向 对象 编程

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接