一,概述
在软件开发的过程中经常会有这种需求,为了达到不同的效果和目的,经常变换类对象,而这些类所要实现的接口对象相对稳定,这种情况就要考虑到简单工厂模式
二,简单工厂模式的组成:
1.工厂类:负责根据不同的逻辑产生不同的对象实例
2.抽象产品类:一般是具体产品类要继承的父类或者是要实现的接口
3.具体产品类:继承了父类的子类或者是实现了接口的子类,是工厂类要创建的类
三,实例解说
描述:公路的收费系统要根据不同的车型收取不同的费用
1.定义抽象产品接口:
public interface Icalcute{
public double calcuteresutl();
}
2.具体产品类实现了抽象产品接口
//车型为car
public class car:Icalcute{
public double calcuteresult()
{
return 33;
}
}
//车型为bus
public class bus:Icalcute{
public double calcuteresult()
{
return 100;
}
}
........可以有多个车型类
3.工厂类,根据不同的条件生成不同的车型类
public calss factory{
ICalcute cal;
public Calcute GetTypeobject(string type)
{
switch(type)
{
case "car":
cal=new car();
break;
case "bus":
cal=new bus();
break;
...........
}
return cal;
}
}
客户端代码
public void main()
{
ICalcute cal;
factory fac=new factory();
cal=fac.GetTypeobject("car");
double fee=cal.calcuteresult();
}
缺点:违背了开发-封闭原则,如果要增加一个jeep车的收费,要增加一个jeep类,另外还要修改factory工厂类中的代码,增加一个case分支