本节的首要内容:1.简单工厂模式的意图;2.UML图描述;3示例代码
一、简单工厂模式意图:按照供给的数据类型。选择一个类进行实例化。
二、UML图描述:
三、代码示例:
举例申明:
工作中薪资的策画体式格式:
法度员=底薪+ 绩效;
发卖员=底薪+提成;
助理=底薪+均匀奖金;
Staff类代码:
![](http://pic-server2.byywee.com/M0/S641/641617-1.jpg)
![](http://pic-server2.byywee.com/M0/S641/641617-2.jpg)
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 6 namespace y.SimpleFactoryExample 7 { 8 public abstract class Staff 9 { 10 public abstract void GetSalary(); 11 } 12 }
Coder、Salesman、Assistant类
![](http://pic-server2.byywee.com/M0/S641/641617-3.jpg)
![](http://pic-server2.byywee.com/M0/S641/641617-4.jpg)
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 6 namespace y.SimpleFactoryExample 7 { 8 public class Coder:Staff 9 { 10 public override void GetSalary() 11 { 12 Console.WriteLine("Coder""s Salar:底薪+绩效"); 13 } 14 } 15 public class Salesman:Staff 16 { 17 public override void GetSalary() 18 { 19 Console.WriteLine("Coder""s Salar:底薪+绩效"); 20 } 21 } 22 23 public class Assistant:Staff 24 { 25 public override void GetSalary() 26 { 27 Console.WriteLine("Assistant""s Salar:底薪+均匀奖金"); 28 } 29 } 30 }
JobEnum
![](http://pic-server2.byywee.com/M0/S641/641617-5.jpg)
![](http://pic-server2.byywee.com/M0/S641/641617-6.jpg)
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 6 namespace y.SimpleFactoryExample 7 { 8 public enum JobEnum 9 { 10 Assistant, 11 Coder, 12 Salesman 13 } 14 }
StaffFactory类:
![](http://pic-server2.byywee.com/M0/S641/641617-7.jpg)
![](http://pic-server2.byywee.com/M0/S641/641617-8.jpg)
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 6 namespace y.SimpleFactoryExample 7 { 8 class StaffFactory 9 { 10 public static Staff CreateStaff(JobEnum jobEnum) 11 { 12 Staff staff=null; 13 switch (jobEnum) 14 { 15 case JobEnum.Assistant: 16 staff = new Assistant(); 17 break; 18 case JobEnum.Coder: 19 staff = new Coder(); 20 break; 21 case JobEnum.Salesman: 22 staff = new Salesman(); 23 break; 24 } 25 return staff; 26 } 27 } 28 }
Program.cs
![](http://pic-server2.byywee.com/M0/S641/641617-9.jpg)
![](http://pic-server2.byywee.com/M0/S641/641617-10.jpg)
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 6 namespace y.SimpleFactoryExample 7 { 8 class Program 9 { 10 static void Main(string[] args) 11 { 12 Console.Title = "简单工厂模式"; 13 Console.WriteLine("Press any key to exit.......\r\n"); 14 Staff staff = StaffFactory.CreateStaff(JobEnum.Salesman); 15 staff.GetSalary(); 16 Console.Read(); 17 } 18 } 19 }
运行成果如下:
四、代码这里下载。
五、小结:这个模式主如果封装了Coder、Assistant等子类。当有的新员工子类(如:客户类),直接持续Staff类,批改StaffFactory类就OK.