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#设计模式(带全套源代码)

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

【设计模式】简单工厂模式与工厂方法模式详细解读

1.前言     设计模式,各具特色,今天在此总结一下常见模式中 简单工厂模式与工厂方法模式的区别与联系 2.两种模式概要    1. 简单工厂模式         对于简单工厂模式的介绍,请...
  • yudandan10
  • yudandan10
  • 2013年03月10日 15:09
  • 4709

C++设计模式——简单工厂模式及具体应用(含例子)

一.简单工厂模式又称静态工厂方法模式(Static Factory Method),它不是Gof 所讲的23种设计模式之一,但是它却是我们在编码过程中经常使用的方法之一。   1.静态工厂方法...
  • swqqcs
  • swqqcs
  • 2014年09月08日 17:36
  • 1165

简单工厂模式——加减乘除

还记得刚入门C语言的时候经常要写一些加加减减的程序来练练手。好吧,既然学了新语言,那就用新语言来写个简单的计算器吧!public class Calculator { public stati...
  • u010429311
  • u010429311
  • 2016年04月01日 00:01
  • 1662

设计模式学习笔记(一)--简单工厂模式源码

  • 2010年07月14日 15:25
  • 68KB
  • 下载

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

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

设计模式学习笔记二:简单工厂模式

简单工厂模式含义:百度百科
  • Array7
  • Array7
  • 2014年08月11日 22:49
  • 692

java设计模式学习笔记之计算器中的简单工厂模式

java设计模式学习笔记之计算器中的简单工厂模式 最近在重温设计模式,偶然看到程杰的《大话设计模式》写的非常不错、通俗易懂,之后的一系列都是学习的笔记,仅此记录。 一、情景回放:某校大二软件工程专...
  • qq137722697
  • qq137722697
  • 2016年11月30日 21:56
  • 2149

设计模式学习笔记——简单工厂模式

简单工厂模式学习笔记
  • u011499992
  • u011499992
  • 2016年02月24日 23:38
  • 301

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

1. 什么是简单工厂模式简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。但是严格来说,简单...
  • yaoliao_11
  • yaoliao_11
  • 2016年10月01日 23:33
  • 149
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#设计模式学习笔记---简单工厂模式
举报原因:
原因补充:

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