前言:简单工厂不能说是设计模式,它是一种变成习惯,因为它不是23种设计模式之一,但是它在实际开发中经常用到,而且也非常简单,可以说是工厂模式的一个引导。

大多程序员都是单身狗,为了弥补一下你们的心情,我决定用你这个对象和你对象进行讲解简单工厂

IWifeAction.cs 接口类

WifeHug.cs 行为类

WifeKiss.cs 行为类

Factory.cs 工厂类

当你去找你老婆索要这些行为的时候,如果她愿意,她就会开始这个行为。

IWifeAction.cs 类Code部分:

namespace MyFactory
{
/// <summary>
/// 抽象行为类:动作
/// </summary>
public interface IWifeAction
{
string GetAction();
}
}

WifeKiss.cs 类 Code部分:

public class WifeKiss : IWifeAction
{
public string GetAction()
{
return "亲亲";
}
}

WifeHug.cs 类 Code部分:

public class WifeHug : IWifeAction
{
public string GetAction()
{
return "抱抱";
}
}

Factory.cs 类 Code部分:

/// <summary>
/// 工厂类
/// </summary>
public class Factory
{
public IWifeAction GetWifeAction(string actionName)
{
if (actionName.Equals("亲亲"))
return new WifeKiss();
else if (actionName.Equals("抱抱"))
return new WifeHug();
throw new Exception("大白天的你想干啥?");
}
}

如果她不愿意的话,就抛一个异常。

客户端 Code部分:

public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
IWifeAction action;
/// <summary>
/// 老公请求
/// </summary>
private void btn_Click(object sender, EventArgs e)
{
Factory factory = new Factory();
//...省略选择。例如switch
try
{
action = factory.GetWifeAction("亲亲");
MessageBox.Show(action.GetAction());
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}

体系结构

简单工厂的要点就是你传什么,它就返回什么。不需要找到那么多细节。

优点:工厂类有必要的逻辑判断,可以决定什么时候创建一个动作类,从而客户端不需要去创建什么对象,只需要消费即可。

      客户端无需去记住具体的类名,通过简单工厂的调用可以将减少使用者记忆。

缺点:由于工厂类包含了所有动作的创建逻辑,如果不能工作,系统则直接out;

   不利于系统扩展,例如我想要亲亲还想要看足球,则需要在if 中(switch) 添加分支.

使用工厂模式的最好场景是:对象较少,维护简单工厂类比较方便时可考虑使用它.

今天俺要说一说简单工厂模式(Simple Factory)的更多相关文章

  1. 设计模式之简单工厂模式Simple Factory(四创建型)

    工厂模式简介. 工厂模式专门负责将大量有共同接口的类实例化 工厂模式可以动态决定将哪一个类实例化,不必事先知道每次要实例化哪一个类. 工厂模式有三种形态: 1.简单工厂模式Simple Factory ...

  2. 创建型模式(前引)简单工厂模式Simple Factory

    一引出的原因(解决下面的问题) 简单工厂模式(Simple Factory Pattern):又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式. 在简单工厂模式 ...

  3. 【设计模式】简单工厂模式 Simple Factory Pattern

    简单工厂模式Simple Factory Pattern[Simple Factory Pattern]是设计模式里最简单的一个模式,又叫静态工厂模式[Static Factory Pattern], ...

  4. Golang设计模式—简单工厂模式(Simple Factory Pattern)

    Golang设计模式--简单工厂模式 背景 假设我们在做一款小型翻译软件,软件可以将德语.英语.日语都翻译成目标中文,并显示在前端. 思路 我们会有三个具体的语言翻译结构体,或许以后还有更多,但现在分 ...

  5. 大白话简单工厂模式 (Simple Factory Pattern)

    大白话简单工厂模式 (Simple Factory Pattern) 从买车经历说起 毕业两年,码农张小两口无法忍受挤公交,凌晨起床抢火车票的痛苦,遂计划买车.逛了多家4S店,最终定下日产某车型的轿车 ...

  6. C#设计模式-1简单工厂模式Simple Factory)

    using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 简单的工 ...

  7. Net设计模式实例之简单工厂模式(Simple Factory Pattern)

    一.简单工厂模式简介(Bref Introduction) 简单工厂模式(Simple Factory Pattern)的优点是,工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类, ...

  8. 简单工厂模式 Simple Factory

    简单工厂模式的作用就是定义一个用于创建对象的接口 在简单工厂模式中,一个工厂类处于对产品类实例化调用的中心位置上,它决定那一个产品类应当被实例化.         先来看看它的组成: 1) 工厂类角色 ...

  9. 转--简单工厂模式 Simple Factory

    简单工厂模式的作用就是定义一个用于创建对象的接口 在简单工厂模式中,一个工厂类处于对产品类实例化调用的中心位置上,它决定那一个产品类应当被实例化.         先来看看它的组成: 1) 工厂类角色 ...

随机推荐

  1. php换行和<br />互转

    使用场景:在后台处理textarea换行的时候出现了问题, textarea里面的换行就是/n, 在textarea里面是有换行效果的,但是输出到其它地方没有效果,这时候就要用到PHP的神奇的nl2b ...

  2. AI零基础入门之人工智能开启新时代—下篇

    人工智能概述 人工智能的定义 · 人工智能是通过机器来模拟人类认识能力的一种科技能力 · 人工智能最核心的能力就是根据给定的输入做出判断或预测 · 思考:通过什么途径才能让机器具备这样的能力? · 举 ...

  3. Spring系列__02IOC模块简介

    Spring的两大核心功能就是IOC和AOP,这篇文章主要介绍IOC. 简单来说,在面向对象思想下,A类中有一个B类的属性, 那么我们在创建A类时往往需要同时创建一个B类的对象,以便A类对其进行调用. ...

  4. 关于阿里ICON矢量图(SVG)上传问题.

    注意点: 1. 存储为svg格式(建议使用存储为svg,不要使用导出为svg)2. 图像位置:链接(注意哦,不要点嵌入和保留编辑功能)---确定3. AI里面选中图形,点对象-路径-轮廓化描边 软件编 ...

  5. BZOJ5335 : [TJOI2018]智力竞赛

    二分答案,转化成求最少的路径,覆盖住所有权值$\leq mid$的点. 建立二分图,若$i$的后继为$j$,则连边$i\rightarrow j$,求出最大匹配,则点数减去最大匹配数即为最少需要的路径 ...

  6. centos 桥接配置 设置网络代理 lnmp搭建

    一.桥接配置 centos设置  编辑->虚拟网络编辑器->桥接模式->还原默认设置 虚拟机->设置->网络适配器->桥接 cd /etc/sysconfig/ne ...

  7. java内存结构

    Java的内存结构 JVM的内存结构主要有三大块:堆.方法区和栈.堆内存是JVM中最大的一块,由年轻代和老年代组成,而年轻代内存又被分为三部分,Eden空间.FromSurvivor空间和ToSurv ...

  8. 封装ajax原理

    封装ajax原理 首先处理 用户如果不传某些参数,设置默认值 type默认get 默认url为当前页 默认async方式请求 data数据默认为{} 处理用户传进来的参数对象 遍历,拼接成key=va ...

  9. Android系统架构及内核简介

    (来源于ThinkPHP) Android是Google公司开发的基于Linux平台的开源手机操作系统,它包括操作系统.中间件.用户界面和应用程序,而且不存在任何以往阻碍移 动产业创新的专利权障碍,并 ...

  10. Springboot搭建SSM+JSP的web项目

    Springboot搭建SSM+JSP的web项目 一:创建项目结构: 项目结构分为三个部分: 1 后端项目开发文件: 包: Util         工具包 Mapper      db层 Serv ...