0.C#设计模式-简单工厂模式

设计模式:

工厂方法模式(Factory Method Pattern)

介绍:简单工厂模式是要在工厂类中通过数据来做个决策,在工厂类中的多个类中实例化出来其中一个要用到的类,做运算。而工厂方法模式则是他的一个的扩展,不在工厂类中做区分从而创建对应的类,而是把这个选择决策权力交给使用类的用户决定。可扩展性比简单工厂模式要好很多

工厂方法模式类图:

工厂方法模式C#代码举例:

MobilePhone类手机类

1  public abstract class MobilePhone
2     {
3         public abstract void print();
4     }

Iphone 类 苹果手机类

1 public class Iphone : MobilePhone
2     {
3         public override void print()
4         {
5             Console.WriteLine("我是苹果手机!");
6         }
7     }

XiaoMI 类 小米手机类

1  public class XiaoMI:MobilePhone
2     {
3         public override void print()
4         {
5             Console.WriteLine("我是小米手机");
6         }
7     }

SmarTisan类 锤子手机类

1 public class SmarTisan : MobilePhone
2     {
3         public override void print()
4         {
5             Console.WriteLine("我是锤子手机!");
6         }
7     }

MobilePhoneFactory 类 手机工厂类

1  public abstract class MobilePhoneFactory
2     {
3         public abstract MobilePhone Create();
4     }

IphoneFactory 类 苹果手机工厂类

1  public class IphoneFactory:MobilePhoneFactory
2     {
3         public override MobilePhone Create()
4         {
5             return new Iphone();
6         }
7     }

XiaoMiFactory类 小米手机工厂类

1  public class XiaoMiFactory:MobilePhoneFactory
2     {
3         public override MobilePhone Create()
4         {
5             return new XiaoMI();
6         }
7     }

SmarTisanFactory类 锤子手机工厂类

1  public class SmarTisanFactory:MobilePhoneFactory
2     {
3         public override MobilePhone Create()
4         {
5             return new SmarTisan();
6         }
7     }

测试

(即使每次增加新的品牌,只需要增加新品牌的类,以及对应工厂即可使用,方便扩展)

 1  class Program
 2     {
 3         static void Main(string[] args)
 4         {
 5             //创建苹果手机工厂
 6             MobilePhoneFactory mobilePhoneFactoryIphone = new IphoneFactory();
 7             //苹果手机工厂创建手机
 8             MobilePhone mobilePhoneIphone = mobilePhoneFactoryIphone.Create();
 9             //由苹果工厂创建苹果手机
10             mobilePhoneIphone.print();
11
12
13             //小米工厂生产小米手机
14             MobilePhoneFactory mobilePhoneFactoryXiaoMi = new XiaoMiFactory();
15             MobilePhone mobilePhoneXiaoMi = mobilePhoneFactoryXiaoMi.Create();
16             mobilePhoneXiaoMi.print();
17
18
19             //锤子手机工厂生产锤子手机
20             MobilePhoneFactory mobilePhoneFactorySmarTisan = new SmarTisanFactory();
21             MobilePhone mobilePhoneSmarTisan = mobilePhoneFactorySmarTisan.Create();
22             mobilePhoneSmarTisan.print();
23
24             Console.Read();
25
26         }
27     }

运行结果:

源码工程文件

转载于:https://www.cnblogs.com/JiYF/p/6409258.html

C#设计模式--工厂方法模式相关推荐

  1. 4. 星际争霸之php设计模式--工厂方法模式

    题记 ============================================================================== 本php设计模式专辑来源于博客(jy ...

  2. java 工厂方法_java设计模式-工厂方法模式

    1.工厂方法(FactoryMethod)模式的定义 定义一个创建产品对象的工厂接口,将产品对象的实际创建工作推迟到具体子工厂类当中.这满足创建型模式中所要求的"创建与使用相分离" ...

  3. 设计模式 | 工厂方法模式及典型应用

    工厂方法模式 工厂方法模式(Factory Method Pattern):定义一个用于创建对象的接口,让子类决定将哪一个类实例化.工厂方法模式让一个类的实例化延迟到其子类. 工厂方法模式又简称为工厂 ...

  4. python工厂模式 django_python设计模式-工厂方法模式

    题目:假设你有一个 pizza 店,功能包括下订单.做 pizza,你的代码会如何写呢? def order_pizza(): pizza = Pizza() pizza.prepare() pizz ...

  5. 工厂方法模式_1天1个设计模式——工厂方法模式

    意图 工厂方法模式是一种创建型设计模式, 其在父类中提供一个创建对象的方法, 允许子类决定实例化对象的类型. 问题 假设你正在开发一款物流管理应用.1.0版本只能支持处理卡车运输,因此大部分的代码都位 ...

  6. [设计模式] ------ 工厂方法模式

    工厂方法模式 手机厂造手机,肥皂厂造肥皂,药品厂造药品. 假设有一大类对象A1,A2,A3,A4-他们都有一个共同的父类A A1可以想成是手机,A2可以想成肥皂- (下面例子的A1Factory就是手 ...

  7. JAVA设计模式 - 工厂方法模式

    工厂方法模式(Factory Pattern) 是一种创建型设计模式 , 它是Java中最常用的设计模式之一 . 1 . 工厂方法模式的定义 定义一个创建对象的接口 , 让子类决定实例化哪一个类 . ...

  8. Java设计模式—工厂方法模式抽象工厂模式

    工厂方法模式与抽象工厂模式都是设计模式中重要而且常见的模式.       工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类.工厂方法使一个类的实例化延迟到其子类. 通用类图如下: 在 ...

  9. 设计模式 - 工厂方法模式 - 基于 Java 实现

    常见和工厂有关的设计模式 和工厂相关的设计模式主要有三种,工厂方法模式,抽象工厂模式: 在前面的博客中介绍了简单工厂模式,本篇博客主要介绍的是工厂方法模式 什么是工厂方法模式 工厂方法模式是简单工厂的 ...

最新文章

  1. 新基建的内涵、意义和隐忧 ,基于互联网大脑模型的分析
  2. Javascript中的树结构
  3. wordcloud库
  4. 前端学习(2006)vue之电商管理系统电商系统之绘制商品参数的复选框
  5. Zookeeper JavaApi 增删改查
  6. Mono 开发 (使用.NET技术的你,绝对不能忽略Mono)
  7. uigetfile命令的应用
  8. 建造者2全部岛屿_勇者斗恶龙建造者2空荡岛流程攻略介绍
  9. 苏宁易购正在“酝酿”下一场蝶变?
  10. 为什么要用深浅拷贝、什么是深浅拷贝、以及如何实现
  11. centos6查看运行服务器,centos如何查看端口是否开放_网站服务器运行维护,centos,端口...
  12. Python 支付宝红包二维码制作步骤分享
  13. ctf-web入门-php特性
  14. php接入阿里云OOS
  15. [转载]关于字体的一些常识
  16. 用计算机亩换算成平方,平方米亩换算(平方米换算亩计算器)
  17. GlobalSign 发布了即将要修改代码签名证书的重要通知
  18. 参加《全流程全要素的研发项目管理》培训记录与心得
  19. storm DRPC例子
  20. pareto最优解程序_求多目标优化问题Pareto最优解集的方法

热门文章

  1. java ztree_ztree简介_动力节点Java学院整理
  2. MapReduce过程详解
  3. Penn Treebank Tags做点小翻译 (下篇)
  4. 算法笔记--无向图的桥、割点、边双连通分量和点双连通分量
  5. SpringBoot结合Druid配置JNDI多数据源
  6. shiro框架 4种授权方式 说明
  7. php编程之如何调用支付宝支付接口的实现
  8. Unity 3D开发-C#脚本语言的一些基础用法
  9. linux mint 16 安装chrome 浏览器
  10. C++ 对象模型学习记录(3)--- 第1章 关于对象(未完)