zoukankan      html  css  js  c++  java
  • 设计模式

    一.创建型模式

    模式名称

    定  义

    使用频率

    学习难度

    简单工厂模式

    (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)
            {
                if (rachees.Checked)
                {
                    Pizza pizza = Fack.st(rachees.Text);
                  string w=  pizza.say();
                  MessageBox.Show(w);
                }
                else
                {
                  Pizza pizza=  Fack.st(rapg.Text);
                  string w = pizza.say();
                  MessageBox.Show(w);
                }
            }
    

      

    三.单模式 

     

      

      
  • 相关阅读:
    jQuery wrap wrapAll wrapInner使用
    jQuery replaceWith replaceAll end的用法
    spring mvc在Controller中获取ApplicationContext
    jQuery的$(window).load与、(document).ready和window.onload的关系
    java上传图片剪切工具类
    二进制查找树转换为双向链表
    关于O(logN)的正确理解
    数据结构-概述(1)
    iOS_4_表情排列
    Unity 3D游戏开发引擎:最火的插件推荐
  • 原文地址:https://www.cnblogs.com/yejiaojiao/p/5243279.html
Copyright © 2011-2022 走看看