[从零开始学设计模式-java]工厂方法模式(Factory Method)

工厂方法模式去掉了简单工厂模式中工厂方法的静态属性,使得它可以被子类继承。这样在简单工厂模式里集中在工厂方法上的压力可以由工厂方法模式里不同的工厂子类来分担。


工厂方法模式的角色分布以及各角色的职责:

抽象工厂角色(Factory):这是工厂方法模式的核心,是具体工厂角色必须实现的接口或者必须继承的父类。在java中由抽象类或者接口来实现。
具体工厂角色(Concrete Factory):它含有和具体业务逻辑有关的代码,由应用程序调用以创建对应的具体产品的对象。
抽象产品角色(Product):它是具体产品继承的父类或者是实现的接口。在java中一般由抽象类或者接口来实现。
具体产品角色(Concrete Product):具体工厂所创建的具体实例对象,这些具体的产品往往都拥有共同的父类。在java中由具体的类来实现。

工厂方法模式的代码实例:

1,创建抽象工厂角色
public interface SenderFactory {
	public Sender producer();
}
2,创建具体工厂角色
public class MailSenderFactory implements SenderFactory{
	public Sender producer(){
		return new MailSender();
	}
}
public class SmsSenderFactory implements SenderFactory{
	public Sender producer(){
		return new SmsSender();
	}
}
3,创建抽象产品角色
public interface Sender {
	public void send();
}
4,创建具体产品角色
public class MailSender implements Sender{
	public void send(){
		System.out.println("Mail Sender!");
	}
}
public class SmsSender implements Sender{
	public void send(){
		System.out.println("Sms Sender!");
	}
}
5,测试
public class FactoryTest {
	public static void main(String[] args){
		SenderFactory senderFactory = new SmsSenderFactory();
		Sender sender = senderFactory.producer();
		sender.send();
	}
}
输出结果:Sms Sender!







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值