设计模式

Posted 葉子。

tags:

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

一.创建型模式

模式名称

定  义

使用频率

学习难度

简单工厂模式

(Simple Factory Pattern)

 

定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类。

 

★★☆☆☆

 

★★★☆☆

工厂方法模式

(Factory Method Pattern)

 

定义一个用于创建对象的接口,但是让子类决定将哪一个类实例化。工厂方法模式让一个类的实例化延迟到其子类。

 

★★☆☆☆

 

★★★★★

抽象工厂模式

(Abstract Factory Pattern)

 

提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。

 

★★★★☆

 

★★★★★

建造者模式

(Builder Pattern)

 

将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

 

★★★★☆

 

★★☆☆☆

原型模式

(Prototype Pattern)

 

使用原型实例指定待创建对象的类型,并且通过复制这个原型来创建新的对象。

 

★★★☆☆

 

★★★☆☆

单例模式

(Singleton Pattern)

 

确保一个类只有一个实例,并提供一个全局访问点来访问这个唯一实例。

 

★☆☆☆☆

 

★★★★☆

 二.简单工厂模式的结构与实现

(一)简单工厂模式的结构

顾客想买奶昔披萨或者培根披萨都会通过工厂来买。如果先实现这个功能的话。

1)第一步先创建窗体

技术分享

2)第二步创建一个产品的父类

  //产品的父类
 //使用来了抽象方法关键字是    abstract
  public abstract  class Pizza
    {
      public abstract string say();
      
     
    }

3)第三步创建奶昔披萨的子类

   注意:一定要继承父类

public   class chees:Pizza
    {
     

      public override string say()
      {
          return "我是奶昔披萨";
      }
    }

 4)第四步创建培根子类

public  class pg:Pizza
    {
    

       public override string say()
       {
           return "我是培根披萨";
       }
    }

 5)第五步创建工厂类

 //抽象类  工厂
   public abstract class Fack
    {
       //静态  父类
       public static Pizza st(string Type) 
       {
           Pizza pizza = null;
           switch (Type)
           {
               case"奶昔披萨":
                   pizza = new chees();
                   break;
               case "培根披萨":
                   pizza = new pg();
                   break;
               default:
                   break;
           }
           return pizza;
       } 
    }

6)点击主窗体订购按钮写如下代码

 private void btOk_Click(object sender, EventArgs e)
        {

         int num1=Convert.ToInt32(   txtLfet.Text);
         string oper = cb.Text;
         int num2 = Convert.ToInt32(txtRight.Text);
         //04.调用工厂的静态方法,传入类型 ,获取返回值
         Operator part = Factory.cu(oper);
         part.NumLeft = num1;
         part.NumRight = num2;
         int result = 0;
         //05.调用对应父类变量的Calc()完成计算,接收返回值
         try
         {
             result = part.Calc();
         }
         catch (Exception ex)
         {

             MessageBox.Show(ex.Message);
         }
         //06.在Label中显示
         label1.Text = result.ToString();
        }

三.单模式 

 技术分享

技术分享

 

 

 

  

 

  

以上是关于设计模式的主要内容,如果未能解决你的问题,请参考以下文章

十条实用的jQuery代码片段

尝试使用片段保存夜间模式状态

如何更改谷歌地图标记上方的标题和片段设计

炫酷 CSS 背景效果的 10 个代码片段

添加片段时的 FlyOut 菜单设计问题

高效Web开发的10个jQuery代码片段