C#之工厂
接下来我来介绍一下我理解的简单工厂模式:
在平时我们需要使用生产对象的一个类当我们需要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#之工厂的更多相关文章
- C++ 可配置的类工厂
项目中常用到工厂模式,工厂模式可以把创建对象的具体细节封装到Create函数中,减少重复代码,增强可读和可维护性.传统的工厂实现如下: class Widget { public: virtual i ...
- 工厂方法模式——创建型模式02
1. 简单工厂模式 在介绍工厂方法模式之前,先介绍一下简单工厂模式.虽然简单工厂模式不属于GoF 23种设计模式,但通常将它作为学习其他工厂模式的入门,并且在实际开发中使用的也较为频繁. (1 ...
- 23种设计模式--工厂模式-Factory Pattern
一.工厂模式的介绍 工厂模式让我们相到的就是工厂,那么生活中的工厂是生产产品的,在代码中的工厂是生产实例的,在直白一点就是生产实例的类,代码中我们常用new关键字,那么这个new出来的实例 ...
- 缓存工厂之Redis缓存
这几天没有按照计划分享技术博文,主要是去医院了,这里一想到在医院经历的种种,我真的有话要说:医院里的医务人员曾经被吹捧为美丽+和蔼+可亲的天使,在经受5天左右相互接触后不得不让感慨:遇见的有些人员在挂 ...
- javascript工厂模式和构造函数模式创建对象
一.工厂模式 工厂模式是软件工程领域一种广为人知的设计模式,这种模式抽象了创建具体对象的过程(本书后面还将讨论其他设计模式及其在JavaScript 中的实现).考虑到在ECMAScript 中无法创 ...
- 设计模式C#合集--抽象工厂模式
抽象工厂,名字就告诉你是抽象的了.上代码. public interface BMW { public void Drive(); } public class BMW730 : BMW { publ ...
- 设计模式C#合集--工厂方法模式
简单工厂,代码: public interface ISpeak { public void Say(); } public class Hello : ISpeak { public void Sa ...
- C# 工厂模式+虚方法(接口、抽象方法)实现多态
面向对象语言的三大特征之一就是多态,听起来多态比较抽象,简而言之就是同一行为针对不同对象得到不同的结果,同一对象,在不同的环境下得到不同的状态. 实例说明: 业务需求:实现一个打开文件的控制台程序的d ...
- PHP设计模式(三)抽象工厂模式(Abstract Factory For PHP)
一.什么是抽象工厂模式 抽象工厂模式的用意为:给客户端提供一个接口,可以创建多个产品族中的产品对象 ,而且使用抽象工厂模式还要满足以下条件: 系统中有多个产品族,而系统一次只可能消费其中一族产品. 同 ...
- PHP设计模式(二)工厂方法模式(Factory Method For PHP)
简单工厂简述: 简单工厂模式实现了生产产品类的代码跟客户端代码分离,在工厂类中你可以添加需要生成长跑的逻辑代码(new 产品类),但是问题来了,优秀的代码是符合"开闭原则"如果你要 ...
随机推荐
- win8 机器硬盘异响
win8系统安装在ssd上,挂了一块希捷2T的机器硬盘做数据存储用,经常发生异响.类似通电断电的声音.因为硬盘的APM节能使磁头归位造成的声音. 使用CrystalDiskInfo软件禁用APM,异响 ...
- Maven(四-1) Maven的配置文件settings.xml
转载于:http://www.cnblogs.com/yakov/archive/2011/11/26/maven2_settings.html 概览 当Maven运行过程中的各种配置,例如pom.x ...
- Api2Doc生成 Restful API 文档
1,引入maven <dependency> <groupId>com.github.terran4j</groupId> <artifactId>te ...
- mysql常用语句及关键字
一.常用sql语句 1.创建数据库userCREATE DATABASE user; 2.删除数据库userDROP DATABASE user; 3.使用数据库userUSE user;显示数据库 ...
- 分区恢复和NTFS文件恢复试验
一.实验室名称:主楼实验室A2-412 二.实验项目名称:分区恢复和NTFS文件恢复试验 三.实验学时:6学时 四.实验原理: 借助fdisk.diskgen软件对磁 ...
- react-native react-navigation的用法
react-navigation升级了, 看这个: react-navigation 3.x版本的使用 一.问题背景 react-navigation是react-native官方推荐的,基于Java ...
- jsp页面拨打电话和QQ聊天
拨打电话: <a href="tel:手机号">拨打电话</a> 这种方式塞班.安卓与iphone都支持. 参考文章:https://blog.csdn.n ...
- requests.session之set trust_env to disable environment searches for proxies
import requests s = requests.Session() s.trust_env = False This will prevent requests getting any in ...
- npm 更改为淘宝镜像的方法
1.命令行临时使用指定镜像(淘宝) npm --registry https://registry.npm.taobao.org install express 2.命令行永久更改使用指定镜像(淘宝) ...
- GCT英语口语复试中的常见问题总汇
英语口语复试中常见的问题: 1. Where do you come from? 2. What kind of landscape surrounds your hometown? 3. What ...