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

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

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

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

namespace ConsoleApplication1
{
/// <summary>
/// 抽象类水果
/// </summary>
public interface Fruits
{
void GetFruits();
} public enum FruitsType
{
AppleType=,
BananaType=,
OrangeType = ,
};
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#之工厂的更多相关文章

  1. C++ 可配置的类工厂

    项目中常用到工厂模式,工厂模式可以把创建对象的具体细节封装到Create函数中,减少重复代码,增强可读和可维护性.传统的工厂实现如下: class Widget { public: virtual i ...

  2. 工厂方法模式——创建型模式02

    1. 简单工厂模式     在介绍工厂方法模式之前,先介绍一下简单工厂模式.虽然简单工厂模式不属于GoF 23种设计模式,但通常将它作为学习其他工厂模式的入门,并且在实际开发中使用的也较为频繁. (1 ...

  3. 23种设计模式--工厂模式-Factory Pattern

    一.工厂模式的介绍       工厂模式让我们相到的就是工厂,那么生活中的工厂是生产产品的,在代码中的工厂是生产实例的,在直白一点就是生产实例的类,代码中我们常用new关键字,那么这个new出来的实例 ...

  4. 缓存工厂之Redis缓存

    这几天没有按照计划分享技术博文,主要是去医院了,这里一想到在医院经历的种种,我真的有话要说:医院里的医务人员曾经被吹捧为美丽+和蔼+可亲的天使,在经受5天左右相互接触后不得不让感慨:遇见的有些人员在挂 ...

  5. javascript工厂模式和构造函数模式创建对象

    一.工厂模式 工厂模式是软件工程领域一种广为人知的设计模式,这种模式抽象了创建具体对象的过程(本书后面还将讨论其他设计模式及其在JavaScript 中的实现).考虑到在ECMAScript 中无法创 ...

  6. 设计模式C#合集--抽象工厂模式

    抽象工厂,名字就告诉你是抽象的了.上代码. public interface BMW { public void Drive(); } public class BMW730 : BMW { publ ...

  7. 设计模式C#合集--工厂方法模式

    简单工厂,代码: public interface ISpeak { public void Say(); } public class Hello : ISpeak { public void Sa ...

  8. C# 工厂模式+虚方法(接口、抽象方法)实现多态

    面向对象语言的三大特征之一就是多态,听起来多态比较抽象,简而言之就是同一行为针对不同对象得到不同的结果,同一对象,在不同的环境下得到不同的状态. 实例说明: 业务需求:实现一个打开文件的控制台程序的d ...

  9. PHP设计模式(三)抽象工厂模式(Abstract Factory For PHP)

    一.什么是抽象工厂模式 抽象工厂模式的用意为:给客户端提供一个接口,可以创建多个产品族中的产品对象 ,而且使用抽象工厂模式还要满足以下条件: 系统中有多个产品族,而系统一次只可能消费其中一族产品. 同 ...

  10. PHP设计模式(二)工厂方法模式(Factory Method For PHP)

    简单工厂简述: 简单工厂模式实现了生产产品类的代码跟客户端代码分离,在工厂类中你可以添加需要生成长跑的逻辑代码(new 产品类),但是问题来了,优秀的代码是符合"开闭原则"如果你要 ...

随机推荐

  1. [saiku] 通过管理台配置用户、schema和数据源

    上一篇讲到了如何下载和安装saiku [http://www.cnblogs.com/avivaye/p/4877680.html] 本文简介下saiku用户的配置操作和需要注意的点 一.添加用户 S ...

  2. SpringBoot入门(1)

    一.初始 ①.首先还是要创建一个maven工程 ②.然后编写Controller 让SpringBoot跑起来并不需要太多的代码,就能实现了我们平时要配置很多的功能,这是怎么做到的呢?我们就下面一个入 ...

  3. Spring cloud Hystrix使用@HystrixCommand使用Hystrix组件及@EnableCircuitBreaker原理介绍

    通过@HystrixCommand注解实现在Spring Cloud使用Hystrix组件相关的工程 cloud-registration-center:注册中心 cloud-service-hyst ...

  4. C#中使用DLL相关问题

    一,C#调用 C/C++ 库函数 1,UNITY的C# VS工程常常打不开 属性页,右键工程无 [添加引用]项.原因是VS的自带工具[适用于UNITY的工具]导致的. 解决办法:VS-[工具]-[选项 ...

  5. centos禁止 You have new mail in /var/spool/mail/root提示

    在/etc/profile 增加unset MAILCHECK

  6. Linux C多线程实现生产者消费者

    今天学习了用Linux C进行线程的同步,实现类似生产者消费者的问题.下面我就来分享我的代码 #include<stdio.h> #include<pthread.h> #in ...

  7. jQuery的过滤器总结

    1.内容过滤器 $(function () { // $("a:contains('标签')").css("color","green") ...

  8. Python解决数独

    Environment: Python27 # -*- coding: UTF-8 -*- ''' Created on 2017年6月9日 @author: LXu4 ''' import copy ...

  9. 无生物学重复RNA-seq分析 CORNAS: coverage-dependent RNA-Seq analysis of gene expression data without biological replicates

    无生物学重复RNA-seq分析 CORNAS: coverage-dependent RNA-Seq analysis of gene expression data without biologic ...

  10. file_get_contents()

    file_get_contents()类似于curl接口调用