简单工厂方法模式和工厂方法模式

简单工厂模式和工厂方法模式都是实例化对象的模式(或方法)。

区别:

简单工厂模式主要是由工厂对象(确切说是传入工厂类方法的参数)决定实例化哪种对象。如下面代码中的type参数。

public class SampleFactor {
	
	public LeiFeng CreateLeiFeng(string type){
		LeiFeng leifeng = null;
		switch (type){
		case: "学雷锋" :
			leifeng = new Undergraduate();
			break;
		case: "社区志愿者":
			leifeng = new Volunteer();
			break;
		}
		return leifeng;
	}

}

客户端调用如下:

SampleFactor samplefactor = new SampleFactor();
LeiFeng res = samplefactor.CreateLeiFeng("学雷锋");
工厂方法模式是定义一个工厂接口,让子类决定实例化哪个类。如下:

public interface IFactor{
	LeiFeng CreateLeiFeng();
}

public UnderGraduate implements IFactor{
	LeiFeng CreateLeiFeng(){
		return new Undergraduate();
	}
}
public VolunteerFactor implements IFactor{
	LeiFeng CreateLeiFeng(){
		return new Volunteer();
	}
}
客户端调用如下:

IFactor ifactor  = new UnderGraduate();//可以换成VolunteerFactor
ifactor.CreateLeiFeng();

工厂方法模式相比简单工厂模式的好处:在保证了集中封装了对象创建的基础上,克服了简单工厂模式违背开放-封闭原则的缺点。因为如果新加入别的子类,后者需要在工厂类中添加case,而前者仅需要扩展,即创建该子类并实现ifactor接口。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值