zoukankan      html  css  js  c++  java
  • 工厂模式

    代码
    using System;
    using System.Collections.Generic;


    /// <summary>
    /// 定义抽象类
    /// </summary>
    public abstract class Log
    {
        
    public abstract void Write();
    }

    public class EventLog:Log
    {
        
    public override void Write()
        {
            Console.WriteLine(
    "EventLog Write Success");
        }
    }
    public class FileLog:Log
    {
        
    public override void Write()
        {
            Console.WriteLine(
    "FileLog Write Success");
        }
    }
    /// <summary>
    /// 抽象工厂
    /// </summary>
    public abstract class LogFactory
    {
        
    public abstract Log Create();
    }

    public class EventFactory:LogFactory
    {
        
    public override EventLog Create()
        {
            
    return new EventLog();
        }
    }

    public class FileFactory:LogFactory
    {
        
    public override FileLog Create()
        {
            
    return new FileLog();
        }
    }

    可以这么去理解,“抽象工厂模式”这个称呼中的“抽象”是一个动词,即对工厂方法模式进行了抽象,就变成了抽象工厂模式,这么理解后,就不难看出它们的区别:

    工厂方法模式:每个抽象产品派生多个具体产品类,每个抽象工厂类派生多个具体工厂类,每个具体工厂类负责一个具体产品的实例创建;

    抽象工厂模式:每个抽象产品派生多个具体产品类,每个抽象工厂派生多个具体工厂类,每个具体工厂负责多个(一系列)具体产品的实例创建。

    你在下面所说的一句话“抽象工厂的具体工厂经常实现工厂方法来创建他的产品”,这句话里面的“工厂方法”仅仅是对一类方法的称呼,此处的“工厂方法”与“工厂方法模式”无关,即便在简单工厂模式中,也会有工厂方法这一说。

  • 相关阅读:
    关于CSS网页布局id与class命名的问题
    JavaScript弹出层技术探讨文章收藏
    Jquery实现弹窗
    Asp.net中时间格式化的几种方法
    新建商品时,导入商品,随机文件名称的形成
    Linux问题:Crontab 执行shell脚本时相对路径的问题,不能识别。
    linux环境php扩展pdo_mysq安装l错误
    测试php代码的运行时间
    Apache的工作方式
    PHP时间处理
  • 原文地址:https://www.cnblogs.com/mikechang/p/1705145.html
Copyright © 2011-2022 走看看