码迷,mamicode.com
首页 > Windows程序 > 详细

C#之工厂

时间:2019-03-15 20:44:05      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:简单工厂   title   tst   ret   苹果   耦合   interface   turn   个人见解   

工厂在我看来分为三种分别都是简单工厂,工厂方法,和抽象工厂,这三种都是将使用和创建分开的一种模式

接下来我来介绍一下我理解的简单工厂模式:

在平时我们需要使用生产对象的一个类当我们需要new 一个对象的时候此是这个类也就是依赖这个对象这样也就是让他们之间的耦合度变得十分的高.如果我们引入了工厂这个概念那么这个工厂是不是可以将这个些统一起来通过switch 或者if其中的参数类型来起到一个识别 的作用来气到降低类对这个对象的耦合度.

接下来展示一些关于简单工厂的代码

namespace ConsoleApplication1
{
    /// <summary>
    /// 抽象类水果
    /// </summary>
    public interface Fruits
    {
        void GetFruits();
    }

    public enum FruitsType
    {
        AppleType=0,
        BananaType=1,
        OrangeType = 2,
    };
    public class Apple : Fruits
    {
        public void GetFruits()
        {
            Console.WriteLine("吃苹果");
        }
    }
    public class Banana : Fruits
    {
        public void GetFruits()
        {
            Console.WriteLine("吃香蕉");
        }
    }

    public class Orange : Fruits
    {
        public void GetFruits()
        {
            Console.WriteLine("吃橘子");
        }
    }

    public class Factory
    {
        public Fruits GetFruits(FruitsType fruitstype)
        {
            switch (fruitstype)
            {
                case FruitsType.AppleType:
                    return new Apple();
                case FruitsType.BananaType:
                    return new Banana();
                case FruitsType.OrangeType:
                    return new Orange();
                default:
                    throw new Exception("没有要买的水果");
            }
          
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Factory factory = new Factory();
            Fruits fruits;
            fruits = factory.GetFruits(FruitsType.AppleType);
            fruits.GetFruits();
            Console.ReadLine();
        }

    }
  
}
resault:apple

当然了这个简单工厂也不是比较完美的一种他也只是适合其中一种情况.当然这个只是我的一点小小的个人见解欢迎大家互相探讨. 

 

C#之工厂

标签:简单工厂   title   tst   ret   苹果   耦合   interface   turn   个人见解   

原文地址:https://www.cnblogs.com/zsznh/p/10539333.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!