设计模式之简单工厂和单列的区别

Posted 追逐梦想的路上

tags:

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

 1.什么是设计模式

 

        解析:针对特定问题而提出特定的解决方案

            简单工厂不算23种设计模式中的一种,--只是一个抽象工厂

 

  2.什么简单工厂呢?

  01.简单工厂的概念

   一个普通的类,在该类定义一个方法;该方法是用静态(static)修饰,返回值为父类的类型,通常方法会带一个参数。

   02.代码举例

  

public class PizzaFactory
    {
        //定义一个 static     并且返回值类型是    父类类型的方法     携带一个参数
       public static Pizza getInstance(string type)
       {
           //01.定义一个父类类型的容器  ,用于保存对应的子类对象
           Pizza pizza=null;
           switch (type)
           {
               case "奶酪比萨":
                   pizza = new CheesePizza();
                   break;
               case "培根比萨":
                   pizza = new PGPizza();
                   break;
           }
           return pizza;
       }
    }

 

  03.父类与子类的代码

  

--父类

   public abstract class Pizza  //abstract关键字来修饰即为抽象类
    {
       public  abstract string  Info();//抽象方法--留给子类来重写
    }

--子类
public class PGPizza:Pizza  //继承
    {
        public override string Info() //重写了方法
        {
            return "您好,培根披萨订购完成!";
        }

--另一个子类
public class CheesePizza:Pizza
    {
        public override string Info()
        {
            return "您好,奶酪比萨成功订购";
        }

 

3.单例

  01.简单描述

  跟简单工厂相似,只不过是单例只能想内存索要一块空间,相当于只能new一次。

在一个普通类中,先给该类定义一个静态(static)的变量,然后将该类的无参构造的修饰符共有的(public)改为私有的(private),

再定义一个静态(static)的方法,返回值类型为该类,最后判断该类是否有new过,即向内存索要空间,如果没有就new,否则就return

会该类的变量即可。

  02.代码如下所示

 

public class Person
   {
       public static  Person p;  //静态变量
       private Person()     //私有的构造函数
       {
       }

       public static Person getInstance()  //静态方法  返回值类型Person 
       {
           if (p==null)                            //判断
           {
               p=new Person();           //索要空间
           }
           return p;     //返回该类的变量

       }
    }

 


     如果觉得有什么不足之处,请各位能够留下您的观点,希望我们都能够学到知识、、、

 

 

 

以上是关于设计模式之简单工厂和单列的区别的主要内容,如果未能解决你的问题,请参考以下文章

设计模式:简单工厂工厂方法抽象工厂之小结与区别

Java,设计模式,简单工厂。

简单工厂工厂方法抽象工厂区别

设计模式之_简单工厂模式工厂方法模式抽象工厂模式 策略模式策略与工厂的区别(转)

用于从 cloudkit 检索单列的代码模式/片段

PHP面向对象之选择工厂和更新工厂