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


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


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

     

  • 相关阅读:
    C++中获取高精度时间差
    有关宏的一个问题
    HDU 2504 又见GCD
    .NET中统一的存储过程调用方法(收藏)
    如何让你的SQL运行得更快
    最赚钱的5种成功创业可行方式
    SQL语句优化技术分析
    js document.getElementByID("aa")的位置
    写SQL时尽量不要对字段进行运算操作
    连接池的问题
  • 原文地址:https://www.cnblogs.com/bdpsc/p/5247786.html
Copyright © 2020-2023  润新知