zoukankan      html  css  js  c++  java
  • 简单工厂和单例设计模式浅解

    什么是设计模式?

      我们知道《孙子兵法》是行军打仗的战术的书籍。有了好的战术才能将军队现有的战斗力发挥到最大化。而我们编写代码也一样需要“战术”,使用合适的战术能极大地提高编码的效率及程序的性能而且写出的代码也会非常好看!而设计模式就是我们码农的《孙子兵法》!

    简单工厂

      简单工厂通俗的来说就是我们通过传递参数给工厂类的静态方法得到我们想要的类型的对象。

    比方说我们有一个比萨类培根比萨和奶油比萨都继承自比萨类我们就可以定义一个比萨工厂类给这个类一个静态方法在参数中出入要使用的比萨的种类在方法内部判断比萨的类型并返回给方法的调用方。

    注意:方法是静态的,返回值类型是比萨类,通过参数判断是那种比萨!

    demo:

     1 //父类 
     2 public abstract class Piza
     3     {
     4         public  string name;
     5         public abstract void  show();
     6 
     7     }
     8 //子类
     9    public  class nailaopiza:Piza
    10     {
    11        public override void show()
    12        {
    13            Console.WriteLine("奶酪披萨");
    14        }
    15     }
    16 //子类
    17     public class peigenpiza:Piza
    18     {
    19 
    20         public override void show()
    21         {
    22             Console.WriteLine("培根披萨");
    23         }
    24     }
    25 
    26     //工厂类
    27    public  class pizagongchang
    28     {
    29        public static Piza CreatePiza(string type)
    30        {
    31            Piza  piza= null;
    32            switch (type)
    33            {
    34                case "奶酪":
    35                    piza = new nailaopiza();//创建奶酪比萨
    36                    break;
    37                case "培根":
    38                    piza = new peigenpiza();//创建培根比萨
    39                    break;
    40                default:
    41                    break;
    42            }
    43            return piza;//返回对应的比萨
    44        }
    45     }

    单例模式

      单例模式要去一个类只能有一个对象

    单例设计模式分一下几步完成

    1. 在类显示的定义一个私有构造。
    2. 定义一个私有,静态的本类类型变量
    3. 定义一个共有的静态方法返回第2步定义的静态变量,在方法内部判断静态变量是否为null,如果为null则先示例化此变量再返回,反之直接返回。

    demo:

    namespace 单利模式
    {
       public class text
       {
           private text() { }//定义私有构造
           private static text t;//定义私有的静态变量,数据类型是本类类型
           public static text createtext() 
           {
               if (t==null)
               {
                   t = new text();//如果t为null则调用私有构造示例化t
               }
               return t;//将t返回给调用者
           }
    
        }
    }
  • 相关阅读:
    Xcode 10 storyBoard中控件区域位置修改
    使用WeexSDK,网络请求信任证书的问题
    真机调试包,解决xcode跑不了高版本iOS系统问题,及Deployment Target不显示高版本系统的问题
    vim进阶学习
    Linux中的inode(转载)
    Linux的文件权限
    远程连接Linux服务器
    WinSDK绘制文本
    (转载)Win32 SDK编程系列文章——菜单(快捷菜单)——动态加载
    (转载)Windows Socket五种I/O模型——代码全攻略
  • 原文地址:https://www.cnblogs.com/wangzheand/p/5242586.html
Copyright © 2011-2022 走看看