C#——简单工厂
简单工厂的方法实现过程核心就是之前介绍的接口应用。所以直接上代码:
public interface IPerson { void Say(); }
public class Student : IPerson
{
public void Say()
{
Console.WriteLine("我是学生....");
}
}
public class Teacher : IPerson
{
public void Say()
{
Console.WriteLine("我是老师...."); ;
}
}
上面创建了一个规划(接口)IPerson,要求有一个Say的方法。类Student、Teacher都继承于这个规范。下面是简单工厂的核心。依据P_Type的类型创建不同的实例类。
public enum P_Type
{
学生, 老师
} public class Factory
{
public IPerson GetSay(P_Type p_type)
{
switch (p_type)
{
case P_Type.学生: return new Student();
case P_Type.老师: return new Teacher();
default: throw new Exception("什么都不是..");
}
}
}
客户端的调用:
static void Main(string[] args)
{
IPerson ip;
try
{
Factory fc = new Factory();
ip = fc.GetSay(P_Type.学生);
ip.Say();
Console.ReadKey();
}
catch (Exception ex)
{ Console.WriteLine(ex.Message);
}
}
这次调用的时候我们给的条件是P_Type.学生,也就是我们需要创建Student类的实例。那么有个问题是下次再修改的时候,不仅需要扩充我们的类,而且我们还需要修改主程序的代码。个人感觉,修改高层的代码(主程序)风险是非常大的,所以为了更加模块化,单一化,便于后期修改,我们又提炼了简单工厂,将工厂抽象化,这就是工厂模式,后面讲会介绍。
参考:详解设计模式之工厂模式(简单工厂+工厂方法+抽象工厂)
C#——简单工厂的更多相关文章
- PHP设计模式(一)简单工厂模式 (Simple Factory For PHP)
最近天气变化无常,身为程序猿的寡人!~终究难耐天气的挑战,病倒了,果然,程序猿还需多保养自己的身体,有句话这么说:一生只有两件事能报复你:不够努力的辜负和过度消耗身体的后患.话不多说,开始吧. 一.什 ...
- Design Patterns Simplified - Part 3 (Simple Factory)【设计模式简述--第三部分(简单工厂)】
原文链接:http://www.c-sharpcorner.com/UploadFile/19b1bd/design-patterns-simplified-part3-factory/ Design ...
- java设计模式之简单工厂模式
简单工厂: 简单工厂的优点: 1.去除客户端与具体产品的耦合,在客户端与具体的产品中增加一个工厂类,增加客户端与工厂类的耦合 2.封装工厂类,实现代码平台的复用性,创建对象的过程被封装成工厂类,可以多 ...
- C#设计模式之简单工厂模式(Simple Factory)
1. 概述 简单工厂模式就是将一个类的实例化交给一个静态工厂来执行. 2. 使用频率 中 3. 模式结构 3.1 机构图 3.2 模式中的角色 Product:抽象类,把具体产品类公共的代码进行抽象和 ...
- 设计模式 — 简单工厂模式(Simple Factory)
定义:定义一个工厂类,它可以根据参数的不同返回不同类型的实例,被创建的实例通常有公共的父类. 模式类型:创建型模型 Factory(工厂角色):即工厂类,负责实现创建所有产品实例的内部逻辑:工厂类可以 ...
- C#设计模式(2)——简单工厂模式
一.概念:简单工厂模式(Simple Factory Pattern)属于类的创新型模式,又叫静态工厂方法模式(Static FactoryMethod Pattern),是通过专门定义一个类来负责创 ...
- 第一章 简单工厂模式 及 UML中类图的表示方法
写一个简单计算器程序时,可以写一个操作类,然后加.减.乘.除操作分别继承它,复写操作计算结果的方法.写一个简单工厂类,通过输入的操作符,使用操作类来new一个相应的操作类的子类对象.这样,工厂就实例化 ...
- 设计模式之简单工厂模式Simple Factory(四创建型)
工厂模式简介. 工厂模式专门负责将大量有共同接口的类实例化 工厂模式可以动态决定将哪一个类实例化,不必事先知道每次要实例化哪一个类. 工厂模式有三种形态: 1.简单工厂模式Simple Factory ...
- 学习设计模式第二十七 - GoF之外简单工厂模式
示例代码来自<深入浅出设计模式>和<大话设计模式> 概述 简单工厂模式又被称为静态工厂模式,属于类的创建型模式.其实质是由一个工厂类根据传入的参量,动态决定应该创建出哪一个产品 ...
- Objective-C 工厂模式(上) -- 简单工厂模式
简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一.简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例.简单工厂 ...
随机推荐
- Unity游戏小地图生成
孙广东 2015.6.25 这个在AssetStore上有几个不错的插件, 除了知道原理,能自己实现还是好的. 非常多插件是不会直接使用的.而是要依据自己项目的需求进行改动或者就是自己写. 那么我们 ...
- cojs1101. [Vijos1369] 难解的问题==codevs 2188 最长上升子序列
[题目描述] 在你的帮助下,蔚蓝来到了埃及.在金字塔里,蔚蓝看到了一个问题,传说,能回答出这个问题的人就能受到埃及法老的祝福,可是蔚蓝日夜奋战,还是想不出来,你能帮帮他么?(XXX: 胡扯,教主怎么可 ...
- 【bzoj1082】栅栏[SCOI2005]
显然我们取的肯定是前ans块木板.然后砍的木材也应该是从小到大砍(如果小的木材可以满足条件,就一定不会去动大的木材) 所以两遍排序. 二分答案. 然后对于要取的每块木板,我们搜索它是在第x块木板上砍下 ...
- C++ 函数模板与类模板(使用 Qt 开发编译环境)
注意:本文中代码均使用 Qt 开发编译环境,如有疑问和建议欢迎随时留言. 模板是 C++ 支持参数化程序设计的工具,通过它可以实现参数多态性.所谓参数多态性,就是将程序所处理的对象的类型参数化,使得一 ...
- [模板]平衡树splay
气死我了,调了一个下午+两节课,各种大大小小的错误,各种调QAQ,最后总之是调出来了. 其实就是一个双旋操作,然后其他就是左儿子<当前节点<右儿子,剩下就是细节了. 题干: 题目描述 您需 ...
- java 监听机制模拟(JButton按钮监听机制)
一.概念 1.事件监听器 事件监听器就我个人的理解就是:被外部事件(键盘.鼠标)引发的程序,这段程序是被嵌入到事件源的类里面,它负责监听事件列表.而很多人把事件监听器理解成是实现EventListen ...
- yum -y --downloadonly --downloaddir=/ruiy upggrde;
事务概要================================================================================================ ...
- PCB SQL SERVER 枚举分割函数(枚举值分解函数)
在SQL SERVER字段采用枚举值作为字段后,如果直接查看字段的值是很难判断这个字段的带表什么意思, 在这里介绍如用函数的方法实现枚举值分割,只有分割后才很方便知道枚举值的意思. 一.问题说明 1. ...
- PCB MongoDB 索引
在索引在数据库中非常重要,当然在MongoDB也是一样啦. 一.获取索引 db.ppeflow.getIndexes() 初始化,每个集都默认_id字段为主键objectid,索引名为_id_ 二.创 ...
- bzoj3224 普通平衡树(splay 模板)
3224: Tyvj 1728 普通平衡树 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 11427 Solved: 4878[Submit][St ...