A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 吴泉水 黑马帝   /  2011-12-13 14:27  /  2283 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

看了半天工厂模式还是一知半解,希望看到大家精辟的语言!

评分

参与人数 1技术分 +1 收起 理由
李荣壮 + 1

查看全部评分

3 个回复

正序浏览
何旭 黑马帝 2011-12-13 14:57:45
板凳
吴泉水 发表于 2011-12-13 14:45
Thank you very much!

为了到首都一游,我冲了!
回复 使用道具 举报
何旭 发表于 2011-12-13 14:37
首先我们来说工厂模式是什么东西!

其实工厂模式,就是创建东西的嘛!不需要什么理解。怎么来创建,正好我 ...

Thank you very much!
回复 使用道具 举报
何旭 黑马帝 2011-12-13 14:37:35
沙发
本帖最后由 何旭 于 2011-12-13 14:38 编辑

首先我们来说工厂模式是什么东西!

其实工厂模式,就是创建东西的嘛!不需要什么理解。怎么来创建,正好我那天写了一个看代码:

首先我们定义一个创建接口
  1. interface Creator
  2.     {
  3.         Product getWork();
  4.     }
复制代码
再定义一个产品接口
  1. public interface Product
  2.     {
  3.         void doWork();
  4.     }
复制代码
分别有一个学生产品和教师产品的实现类
  1. public class ConcreteProduct_Student : Product
  2.     {
  3.         #region IProduct 成员

  4.         public void doWork()
  5.         {
  6.             Console.WriteLine("我是学生");
  7.         }

  8.         #endregion
  9.     }
复制代码
  1. public class ConcreteProduct_Teacher : Product
  2.     {
  3.         #region IProduct 成员

  4.         public void doWork()
  5.         {
  6.             Console.WriteLine("我是老师");
  7.         }

  8.         #endregion
  9.     }
复制代码
再分别有一个创建学生产品和创建教师产品的创建实现类
  1. public class ConcreteCreator_Student : Creator
  2.     {
  3.         #region IWorkFactory 成员

  4.         public Product getWork()
  5.         {
  6.             return new ConcreteProduct_Student();
  7.         }

  8.         #endregion
  9.     }
复制代码
  1. public class ConcreteCreator_Teacher : Creator
  2.     {
  3.         #region IWorkFactory 成员

  4.         public Product getWork()
  5.         {
  6.             return new ConcreteProduct_Teacher();
  7.         }

  8.         #endregion
  9.     }
复制代码
使用的时候这样就行了
  1. class Program
  2.     {
  3.         static void Main(string[] args)
  4.         {
  5.             ConcreteCreator_Teacher t = new ConcreteCreator_Teacher();
  6.             t.getWork().doWork();
  7.             ConcreteCreator_Student s = new ConcreteCreator_Student();
  8.             s.getWork().doWork();
  9.             Console.ReadLine();
  10.         }
  11.     }
复制代码
输出的结果:

我是老师
我是学生

评分

参与人数 1技术分 +2 收起 理由
朱勋 + 2

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马