C#设计模式学习笔记---简单工厂模式

原创 2004年08月02日 17:10:00
None.gif----------
None.gifSample
None.gif
------------------------------
None.gif
using System;
None.gif
None.gif
namespace Factory
ExpandedBlockStart.gif
{
ExpandedSubBlockStart.gif 
/// <summary>
InBlock.gif 
/// Namer 的摘要说明。
ExpandedSubBlockEnd.gif 
/// </summary>

InBlock.gif public class Namer   //基类
ExpandedSubBlockStart.gif
 {
InBlock.gif  
protected string fname,lname;
InBlock.gif
InBlock.gif  
public string getFname()
ExpandedSubBlockStart.gif  
{
InBlock.gif   
return this.fname;
ExpandedSubBlockEnd.gif  }

InBlock.gif  
public string getLname()
ExpandedSubBlockStart.gif  
{
InBlock.gif   
return this.lname;
ExpandedSubBlockEnd.gif  }

ExpandedSubBlockEnd.gif }

ExpandedBlockEnd.gif}

None.gif---------------------------
None.gif
using System;
None.gif
None.gif
namespace Factory
ExpandedBlockStart.gif
{
ExpandedSubBlockStart.gif 
/// <summary>
InBlock.gif 
/// First 的摘要说明。
ExpandedSubBlockEnd.gif 
/// </summary>

InBlock.gif public class First:Namer //继承类  用空格分开姓名的一种方法
ExpandedSubBlockStart.gif
 {
InBlock.gif 
InBlock.gif  
public First(string name)
ExpandedSubBlockStart.gif  
{
InBlock.gif   
int i=name.Trim().IndexOf(" ");
InBlock.gif   
if(i>0)
ExpandedSubBlockStart.gif   
{
InBlock.gif    fname
=name.Substring(0,i).Trim();
InBlock.gif    lname
=name.Substring(i+1).Trim();
ExpandedSubBlockEnd.gif   }

InBlock.gif   
else
ExpandedSubBlockStart.gif   
{
InBlock.gif    lname
=name;
InBlock.gif    fname
="";
ExpandedSubBlockEnd.gif   }

ExpandedSubBlockEnd.gif  }

ExpandedSubBlockEnd.gif }

ExpandedBlockEnd.gif}

None.gif------------------------------
None.gif
using System;
None.gif
None.gif
namespace Factory
ExpandedBlockStart.gif
{
ExpandedSubBlockStart.gif 
/// <summary>
InBlock.gif 
/// Second 的摘要说明。
ExpandedSubBlockEnd.gif 
/// </summary>

InBlock.gif public class Second:Namer //继承类 用逗号分开姓名的另一种方法
ExpandedSubBlockStart.gif
 {
InBlock.gif 
InBlock.gif  
public Second(string name)
ExpandedSubBlockStart.gif  
{
InBlock.gif   
int i=name.IndexOf(",");
InBlock.gif   
if(i>0)
ExpandedSubBlockStart.gif   
{
InBlock.gif    lname
=name.Substring(0,i);
InBlock.gif    fname
=name.Substring(i+1).Trim();
ExpandedSubBlockEnd.gif   }

InBlock.gif   
else
ExpandedSubBlockStart.gif   
{
InBlock.gif    lname
=name;
InBlock.gif    fname
="";
ExpandedSubBlockEnd.gif   }

ExpandedSubBlockEnd.gif  }

ExpandedSubBlockEnd.gif }

ExpandedBlockEnd.gif}

None.gif------------------------------
None.gif
using System;
None.gif
None.gif
namespace Factory
ExpandedBlockStart.gif
{
ExpandedSubBlockStart.gif 
/// <summary>
InBlock.gif 
/// NameFactory 的摘要说明。
ExpandedSubBlockEnd.gif 
/// </summary>

InBlock.gif public class NameFactory   //工厂类 
ExpandedSubBlockStart.gif
 {
InBlock.gif  
InBlock.gif  
public Namer getName(string name)
ExpandedSubBlockStart.gif  
{
InBlock.gif   
int i=name.IndexOf(",");
InBlock.gif   
if(i>0)
ExpandedSubBlockStart.gif   
{
InBlock.gif    
return new Second(name);
ExpandedSubBlockEnd.gif   }

InBlock.gif   
else
ExpandedSubBlockStart.gif   
{
InBlock.gif    
return new First(name);
ExpandedSubBlockEnd.gif   }

ExpandedSubBlockEnd.gif  }

ExpandedSubBlockEnd.gif }

ExpandedBlockEnd.gif}

None.gif--------------------------------
None.gif
ExpandedBlockStart.gif
///////////////////////////////////简单工厂模式示例//////////////////////////////////////////////////////
None.gif
None.gif
None.gif
using System;
None.gif
using System.Drawing;
None.gif
using System.Collections;
None.gif
using System.ComponentModel;
None.gif
using System.Windows.Forms;
None.gif
using System.Data;
None.gif
None.gif
namespace Factory
ExpandedBlockStart.gif
{
ExpandedSubBlockStart.gif 
/// <summary>
InBlock.gif 
/// Form1 的摘要说明。
ExpandedSubBlockEnd.gif 
/// </summary>

InBlock.gif public class Form1 : System.Windows.Forms.Form
ExpandedSubBlockStart.gif 
{
InBlock.gif  
private System.Windows.Forms.Label label1;
InBlock.gif  
private System.Windows.Forms.TextBox txname;
InBlock.gif  
private System.Windows.Forms.Button btComputer;
InBlock.gif  
private System.Windows.Forms.Label label2;
InBlock.gif  
private System.Windows.Forms.Label label3;
InBlock.gif  
private System.Windows.Forms.TextBox txlname;
InBlock.gif  
private System.Windows.Forms.TextBox txfname;
InBlock.gif  
private System.Windows.Forms.Label label4;
ExpandedSubBlockStart.gif  
/// <summary>
InBlock.gif  
/// 必需的设计器变量。
ExpandedSubBlockEnd.gif  
/// </summary>

InBlock.gif  private System.ComponentModel.Container components = null;
InBlock.gif
InBlock.gif  
public Form1()
ExpandedSubBlockStart.gif  
{
InBlock.gif   
//
InBlock.gif   
// Windows 窗体设计器支持所必需的
InBlock.gif   
//
InBlock.gif
   InitializeComponent();
InBlock.gif
InBlock.gif   
//
InBlock.gif   
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
InBlock.gif   
//
ExpandedSubBlockEnd.gif
  }

InBlock.gif
ExpandedSubBlockStart.gif  
/// <summary>
InBlock.gif  
/// 清理所有正在使用的资源。
ExpandedSubBlockEnd.gif  
/// </summary>

InBlock.gif  protected override void Dispose( bool disposing )
ExpandedSubBlockStart.gif  
{
InBlock.gif   
if( disposing )
ExpandedSubBlockStart.gif   
{
InBlock.gif    
if (components != null
ExpandedSubBlockStart.gif    
{
InBlock.gif     components.Dispose();
ExpandedSubBlockEnd.gif    }

ExpandedSubBlockEnd.gif   }

InBlock.gif   
base.Dispose( disposing );
ExpandedSubBlockEnd.gif  }

InBlock.gif
ContractedSubBlock.gif  
Windows 窗体设计器生成的代码
InBlock.gif
ExpandedSubBlockStart.gif  
/// <summary>
InBlock.gif  
/// 应用程序的主入口点。
ExpandedSubBlockEnd.gif  
/// </summary>

InBlock.gif  [STAThread]
InBlock.gif  
static void Main() 
ExpandedSubBlockStart.gif  
{
InBlock.gif   Application.Run(
new Form1());
ExpandedSubBlockEnd.gif  }

InBlock.gif
InBlock.gif  
private void Form1_Load(object sender, System.EventArgs e)
ExpandedSubBlockStart.gif  
{
InBlock.gif  
ExpandedSubBlockEnd.gif  }

InBlock.gif
InBlock.gif  
private void btComputer_Click(object sender, System.EventArgs e)
ExpandedSubBlockStart.gif  
{
InBlock.gif   NameFactory nf
=new NameFactory();
InBlock.gif   Namer nm
=nf.getName(this.txname.Text);
InBlock.gif   
this.txfname.Text=nm.getFname();
InBlock.gif   
this.txlname.Text=nm.getLname();
ExpandedSubBlockEnd.gif  }

ExpandedSubBlockEnd.gif }

ExpandedBlockEnd.gif}

None.gif
None.gif

---------------------------
最后一个是简单工厂模式的应用。简单工厂模式有三个以上的类。一个是基类,一个以上的继承类和一个工厂类,最后一个当然是应用类。简单工厂模式是用多继承来实现的,可以说是应用于有多种解决方法的问题

【设计模式】C#版三大工厂之简单工厂、工厂方法与抽象工厂

引言         简单工厂、工厂方法、抽象工厂都属于设计模式中的创建型模式。其主要功能都是帮助我们把对象的实例化部分抽象取了出来,优化了系统的架构,并且增强了系统的扩展性。此篇博客是笔者对学完这三...
  • liuziteng0228
  • liuziteng0228
  • 2017-02-03 21:28:04
  • 826

C#简单工厂模式

刚刚开始设计模式,有了视频的基础,写代码相对容易一些,大话设计的第一章,首先就是代码规范,不论是以前学习VB还是准备考试的C++,到现在的C#,还有以后的Java等等,代码规范都是很重要的,所以从现在...
  • u010785685
  • u010785685
  • 2014-03-25 19:32:16
  • 1991

C#学习笔记之 简单工厂模式

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T...
  • weixin_37750664
  • weixin_37750664
  • 2018-02-24 11:33:45
  • 39

C#设计模式学习笔记(一) 之 简单工厂模式

这是一个关于记录我学习(C#)设计模式的系列笔记,主要是记录一些知识点,和一些个人的理解。 如果真能帮助到大家的话,哪怕是一点点,我也是很开心的啦。 PS:由于本人第一次写博客,所以我写得可能会很...
  • qq_31743125
  • qq_31743125
  • 2016-05-02 14:21:47
  • 141

C# 判断是否处于设计模式中(IsDesignMode)

自定义控件时提供IsDesignMode属性是很强力的。
  • Yokeqi
  • Yokeqi
  • 2014-12-11 10:21:36
  • 3019

C#设计模式(带全套源代码)

  • 2008年07月14日 11:17
  • 5.11MB
  • 下载

简单工厂设计模式

1.简单工厂的定义       提供一个创建对象实例的功能,而无需关系其具体实现,被创建实例的类型可以是接口、抽象类,也可以是具体的类。2.简单工厂的结构和说明 简单工厂的结构如下图:Api: 定义客...
  • fd2025
  • fd2025
  • 2018-03-29 09:52:58
  • 32

简单工厂模式(C语言实现)

一. 简单工厂模式 简单工厂模式,它的主要特点是需要在工厂类中做判断,从而创造相应的产品。当增加新的产品时,就需要修改工厂类。举个例子,有一家电子产品生产厂家,它只有一个工厂,能够生产两种型号的产品,...
  • HMSIWTV
  • HMSIWTV
  • 2014-06-19 22:07:11
  • 1613

【设计模式】简单工厂模式——以一个简单的计算器为例

本文内容参考自《大话设计模式》(程杰 著) 1.拙劣的代码class Program{ static void Main(string[] args) { Console.W...
  • jiange_zh
  • jiange_zh
  • 2015-12-04 13:51:04
  • 3410

Unity3D中实现简单工厂设计模式

  • 2014年06月03日 17:15
  • 11.33MB
  • 下载
收藏助手
不良信息举报
您举报文章:C#设计模式学习笔记---简单工厂模式
举报原因:
原因补充:

(最多只允许输入30个字)