设计模式之工厂模式(2)

1、定义

      多个工厂模式:工厂类中定义多个方法,每个方法对应生成产品

      静态工厂模式:工厂类中定义静态方法,每个静态方法对于生成产品;或者定义一个静态方法来生成产品;

 

 

2、例子

      拿简单工厂模式(1)的例子进行改进,SenderFactory采用多个工厂模式/静态工厂模式的方法

      多个工厂模式:

public class SenderFactory {
	public Sender createMailSender() {
		return new MailSender();
	}
	
	public Sender createSmsSender() {
		return new SmsSender();
	}
	
	public Sender createPushSender() {
		return new PushSender();
	}
}

   

public static void main(String[] args) {
		SenderFactory factory = new SenderFactory();
		Sender sender = factory.createPushSender();
		sender.send();
	}

 

    静态工厂类(1):

    

public class SenderFactory {
	public static Sender createMailSender() {
		return new MailSender();
	}

	public static Sender createSmsSender() {
		return new SmsSender();
	}

	public static Sender createPushSender() {
		return new PushSender();
	}
}

 

public static void main(String[] args) {
		Sender sender = SenderFactory.createMailSender();
		sender.send();
	}

   静态工厂类(2)
  

public class SendFactory {
	public final static int MAIL = 1;
	public final static int SMS = 2;
	public final static int PUSH = 3;

	public static Sender createSender(int sendType) {
		Sender sender = null;
		switch (sendType) {
		case SendFactory.MAIL:
			sender = new MailSender();
			break;
		case SendFactory.SMS:
			sender = new SmsSender();
			break;
		case SendFactory.PUSH:
			sender = new PushSender();
			break;
		default:
			sender = new MailSender();
			break;
		}
		
		return sender;
	}
}

 

    与简单工厂模式相比,不管多个工厂模式还是静态工厂模式,SenderFactory类中自己添加相应的方法,如果再添加一种发送方式,还需要修改SenderFactory的类, 还是破坏了开闭原则。

     

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值