C# 工厂模式示例

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

namespace 工厂模式
{
    class Program
    {
        static void Main(string[] args)
        {
            //初始化做菜的工厂
            Creator shreddedPorkWithPotatoesFactory = new ShreddedPorkWithPotatoesFactory();
            Creator tomatoScrambledEggsFactory = new TomatoScrambledEggsFactory();
            //生产西红柿炒蛋
            Food tomatoScrambleEggs = tomatoScrambledEggsFactory.CreateFoodFactory();
            tomatoScrambleEggs.Print();
            //生产土豆肉丝
            Food shreddedPorkWithPotatoes = shreddedPorkWithPotatoesFactory.CreateFoodFactory();
            shreddedPorkWithPotatoes.Print();
            Console.ReadKey();
        }
    }
    /// <summary>
    /// 菜抽象类
    /// </summary>
    public abstract class Food
    {
        /// <summary>
        /// 抽象方法输出什么菜
        /// </summary>
        public abstract void Print();
    }
    /// <summary>
    /// 做西红柿炒蛋
    /// </summary>
    public class TomatoScrambledEggs : Food
    {
        /// <summary>
        /// 重载Food的抽象方法Print
        /// </summary>
        public override void Print()
        {
            Console.WriteLine("西红柿炒蛋已经准备完毕!");
        }
    }
    /// <summary>
    /// 做土豆肉丝
    /// </summary>
    public class ShreddedPorkWithPotatoes : Food
    {
        /// <summary>
        /// 重载Food的抽象方法Print
        /// </summary>
        public override void Print()
        {
            Console.WriteLine("土豆肉丝已经准备完毕!");
        }
    }
    /// <summary>
    /// 抽象工厂类
    /// </summary>
    public abstract class Creator
    {
        public abstract Food CreateFoodFactory();
    }
    /// <summary>
    /// 西红柿炒蛋工厂
    /// </summary>
    public class TomatoScrambledEggsFactory : Creator
    {
        /// <summary>
        /// 重载创建西红柿这个菜
        /// </summary>
        /// <returns></returns>
        public override Food CreateFoodFactory()
        {
            return new TomatoScrambledEggs();
        }
    }
    /// <summary>
    /// 土豆肉丝工厂
    /// </summary>
    public class ShreddedPorkWithPotatoesFactory:Creator
    {
        /// <summary>
        /// 创建土豆肉丝这个菜
        /// </summary>
        /// <returns></returns>
        public override Food CreateFoodFactory()
        {
            return new ShreddedPorkWithPotatoes();
        }
    }
}
时间: 2024-11-05 13:38:23

C# 工厂模式示例的相关文章

工厂模式总结(简单工厂,工厂方法,抽象工厂)

工厂模式属于创建型模式,大致可以分为三类,简单工厂模式.工厂方法模式.抽象工厂模式. 通过两个例子讲解这三种工厂模式 示例一 简单工厂模式 首先介绍简单工厂模式,它的主要特点是需要在工厂类中做判断,从而创造相应的产品.当增加新的产品时,就需要修改工厂类.有点抽象,举个例子就明白了.有一家生产处理器核的厂家,它只有一个工厂,能够生产两种型号的处理器核.客户需要什么样的处理器核,一定要显示地告诉生产工厂.下面给出一种实现方案. 1 enum CTYPE {COREA, COREB}; 2 class

iOS设计模式(代码分析系列2:简单工厂模式)

简单工厂模式示例代码下载地址, 1.简述 首先需要说明一下,简单工厂模式不属于23种GOF设计模式之一.它也称作静态工作方法模式,是工厂方法模式的特殊实现(也就是说工厂模式包含简单工厂模式).这里对简单工厂模式进行介绍,是为后面的工厂方法和抽象工厂模式做一个引子. 2.定义 "专门定义一个类来负责创建其他类的实例,被创建的实例通常具有共同的父类." 世界上就是由一个工厂类,根据传入的参数,动态地决定创建出哪一个产品类的实例. 3.结构图 简要分析结构图: ConcreteProduct

抽象工厂模式 shiyanlou

二.什么是 抽象工厂模式 抽象工厂模式(Abstract Factory Pattern)是一种软件开发设计模式.抽象工厂模式提供了一种方式,可以将一组具有同一主题的单独的工厂封装起来.如果比较抽象工厂模式和工厂模式,我们不难发现前者只是在工厂模式之上增加了一层抽象的概念.抽象工厂是一个父类工厂,可以创建其它工厂类.所以我们也叫它 “工厂的工厂”.(想想上节课的 “女娲娘娘”,这简直就是 “女娲娘娘的亲娘” 啊...) 三. 抽象工厂模式类图 四. 抽象工厂模式示例代码 Talk is chea

简单工厂模式\工厂方法模式

工厂模式 一.本节目标 我们本节课程主要介绍[工厂模式]的相关知识,将会涉及以下内容: 什么是工厂模式 工厂模式类图 工厂模式代码 工厂模式应用 PS:学习 Java 设计模式之前最好有一定的 Java 语言基础.由于讲这种东西其实比较枯燥,为了让大家学习起来轻松愉快一点,我会尽量使用一些生动.形象和幽默的例子. 二.什么是工厂模式 工厂模式(Factory Pattern)的意义就跟它的名字一样,在面向对象程序设计中,工厂通常是一个用来创建其他对象的对象.工厂模式根据不同的参数来实现不同的分配

3. 星际争霸之php设计模式--简单工厂模式

题记==============================================================================本php设计模式专辑来源于博客(jymoz.com),现在已经访问不了了,这一系列文章是我找了很久才找到完整的,感谢作者jymoz的辛苦付出哦!============================================================================== 上次用星际争霸讨论了面向对象的基础知识

简单理解C#中的抽象工厂模式是什么概念!

抽象工厂模式向客户端提供一个接口,使得客户端在不必指定具体类型的情况下,创建多个产品族中的对象.本文采取的仍然是接着以前的那个快餐店的例子.现在,快餐店经常良好,逐渐发展壮大,为了适合不同地方人的饮食习惯,创建了两大系列(相当于产品族)快餐,北方系列和南方系列.每个系列分别由一个大厨掌勺.抽象工厂模式对新的产品族支持开闭原则,但对新的产品不支持开闭原则.例如增加新的产品族,如增加美国系列快餐(相当于增加了一个产品族),则只要从每个产品接口继承一个相应美国系列产品即可,不需要更改已有的代码.但如果

5. 星际争霸之php设计模式--抽象工厂模式

题记==============================================================================本php设计模式专辑来源于博客(jymoz.com),现在已经访问不了了,这一系列文章是我找了很久才找到完整的,感谢作者jymoz的辛苦付出哦! 本文地址:http://www.cnblogs.com/davidhhuan/p/4248178.html============================================

工厂模式

工厂模式属于创建型模式,由一个工厂对象决定创建出哪一种产品类的实例. 角色: IProduct: 产品共同的接口 Product1:具体的产品类 Creator:工厂类,可根据参数决定创建的产品类型 示例: public interface IProduct { void myfunction(); } --- class Product1 implements IProduct{ public void myfunction(){ System.out.println("function1&q

设计模式(3)抽象工厂模式(Abstract Factory)

设计模式(0)简单工厂模式 设计模式(1)单例模式(Singleton) 设计模式(2)工厂方法模式(Factory Method) 源码地址 0 抽象工厂模式简介 0.0 抽象工厂模式定义 抽象工厂模式一般的书面定义为:提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类 提供创建接口,无需指定具体实现类,这个原则在简单工厂模式和工厂方法模式篇已经反复讲到了,这是面向接口编程的一个基本准则,很显然,从抽象工厂模式的一般定义中可以看出这也是抽象工厂模式的一个核心,而抽象工厂模式的另