你的位置:首页 > ASP.net教程

[ASP.net教程]设计模式之简单工厂和单列的区别


 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;   //返回该类的变量    }  }

 


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