zoukankan      html  css  js  c++  java
  • 《深入浅出设计模式》一书学习(.net版—简单工厂)

    代码
    深入浅出设计模式)设计模式--简单工厂

    ------------------------------

    code_xyz@sina.com

    -------------------------------

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    namespace Factory_abstract
    {

    /*
    抽象产品,简单工厂模式所创建的实例的父类。它描述所有类的所有公共属性
    */
    abstract class EFT
    {
    public abstract void process();
    }

    /// <summary>
    /// 产品角色
    /// </summary>
    class VirtualCheck : EFT
    {
    public override void process()
    {
    Console.WriteLine(
    "虚拟电子票在交易");
    //throw new NotImplementedException();
    }
    }
    /// <summary>
    /// 产品角色
    /// </summary>
    class Carsh : EFT
    {
    public override void process()
    {
    Console.WriteLine(
    "现金在交易");
    //throw new NotImplementedException();
    }
    }

    /// <summary>
    /// 工厂角色
    /// </summary>
    ///
    /*
    * 是简单工厂模式的核心,它负责实现创建所有是实例的内部逻辑,工厂类可以被外界直接调用,创建所需的产品对象!
    *
    */
    class EFTFactory
    {
    public EFT CreatEFT(string type)
    {
    switch (type.ToLower())
    {
    case "virtualcheck":
    return new VirtualCheck();
    case "carsh":
    return new Carsh();
    default: return null;
    }
    }


    }


    /// <summary>
    /// 客户应用测试
    /// </summary>
    class client
    {
    static void Main(string[] args)
    {
    EFT eft;
    EFTFactory eftCreator
    = new EFTFactory();
    eft
    = eftCreator.CreatEFT("VirtualCheck");
    eft.process();


    eft
    = eftCreator.CreatEFT("Carsh");
    eft.process();
    Console.ReadKey();
    }
    }
    }

    ------------------------------------------------------------------------------------------------------------------------------------------------------

    优点:高内聚。

    缺点:却高耦合!
  • 相关阅读:
    DataGridView 复选框 操作大全
    ClickOnce 创建桌面快捷方式
    测量程序经过的时间
    C# Js 时间格式化问题
    MVC 漫长之路(一)
    SQL 查一年内的数据
    DataRow对象的RowState和DataRowVersion属性特点
    iOS打开百度地图、高德地图导航
    NSURLCache 和 NSCache 的区别
    MagicalRecord的使用(第三方库实现的数据库)
  • 原文地址:https://www.cnblogs.com/shenlian/p/1882553.html
Copyright © 2011-2022 走看看