简单工厂-------And-----单例模式

Posted 柒@海枫

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简单工厂-------And-----单例模式相关的知识,希望对你有一定的参考价值。

   我们IT人员或多或少都听说过简单工厂模式,但对于他的了解有多深,我们自己或许也不太清楚,下面,就让我们学习一下简单工厂的一些知识。

  1.简单工厂模式

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

下面是简单工厂的原理图:

技术分享

 

 

我们来写个例子来加深一下理解:

下面的例子是用简单工厂的原理来实现订购披萨的过程:

1.我们来先创建一个窗体

技术分享

2.然后创建一个父类(pizza)和几个pizza子类(父类为抽象类,子类override重写)

public  class PGPizza:Pizza
    {
        public override string info()
        {
            return "你已成功订购培根披萨";
        }
    }
 public  class cheesePizza:Pizza
    {

        public override string info()
        {
            return "你已成功订购奶酪披萨";
        }
    }

 

技术分享

3.然后有一个工厂类,提供一个生产披萨的方法(这个方法有三个注意点:静态的---返回值类型为父类类型----一般带一个参数)

 public  class Pizzafactory
    {
public static Pizza getInfo(string type) { Pizza pizza = null; switch (type) { case "奶酪披萨": pizza = new cheesePizza(); break; case "培根披萨": pizza = new PGPizza(); break; } return pizza; } }

4.最后通过主窗体调用方法

 private void btnOk_Click(object sender, EventArgs e)
        {
            //接受订购文本
            if (rbncheese.Checked)
            {
               Pizza p= Pizzafactory.getInfo(rbncheese.Text);
               string word = p.info();
               MessageBox.Show(word);
            }
            else if (rbnpg.Checked)
            {
                Pizza p = Pizzafactory.getInfo(rbnpg.Text);
                string word = p.info();
                MessageBox.Show(word);
            }

        }

 

2.单例模式

在某些特殊的场合中,我们需要在内存中只驻留某个类的一个对象,KTV点歌系统,播放窗体只需要有一个。

这就会用到单例模式。

技术分享

 今天就到这里,下次见!!!

 

以上是关于简单工厂-------And-----单例模式的主要内容,如果未能解决你的问题,请参考以下文章

java与模式,这段代码怎么反映简单工厂模式了?

单例模式和工厂模式

单例模式和工厂方法模式

工厂模式与单例模式

PHP面向对象-设计模式 单例模式 简单工厂模式 工厂方法模式

面向对象编程模式之“简单工厂和单例“