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);
                }
            }
    

      

    三.单模式 

     

      

      
  • 相关阅读:
    Java核心技术 卷一 笔记四 库类的直接使用
    Java核心技术 卷一 笔记三 大数值及数组
    Java核心技术 卷一 笔记2 字符串的复制
    Java核心技术 卷一 笔记1
    修改css 样式后, hover事件 不生效
    修改 element ui input 输入框 样式不生效问题
    css3 计算属性
    Vue3 改动系列
    浏览器实现,向下滑动 鼠标滚轮,页面横向移动
    linux ceont0s7 vue 打包压缩图片 一直报错
  • 原文地址:https://www.cnblogs.com/yejiaojiao/p/5243279.html
Copyright © 2011-2022 走看看