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

简单工厂模式

在前面的博客简单工厂模式和策略模式的应用的前半部分,提到过简单工厂模式,我们知道,简单工厂模式的主要优点在于封装了对象的创建过程,很大程度上实现了低耦合,但是,我们也能清晰的看到,当需要扩展新的功能时,我们不得不修改工厂类,这种做法实则违反了“开放--封闭”原则 。为了解决这一问题,我们引入工厂方法模式

工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法类使得一个类的实例化对象延迟到其子类。

工厂方法模式的结构图


由上述结构我们可以看出工厂方法类是将工厂类中实例化对象的过程转移到其子类,这样做,在有效的封装了对象的创建过程的基础上,也符合了“开放--封闭”原则。

工厂方法模式实现代码

如下:

interface Fruit{
	public void result( );
}
interface Factory{
	public Fruit getfruit();
}
/*
 * 以下类均实现了具体类的接口
 */
class Apple implements Fruit{
	public void result( ) {
		System.out.println("吃苹果!");
	}
	
}
class Orange implements Fruit{
	public void result( ) {
		System.out.println("吃橘子!");
	}
}
class Banana implements Fruit{
	public void result( ) {
		System.out.print("吃香蕉!");
		
	}
}
/*
 * 以下的类实现了工厂接口
 */
class AppleFactory implements Factory{
	public Fruit getfruit() {
		// TODO Auto-generated method stub
		return new Apple();
	}
}
class OrangeFactory implements Factory{
	public Fruit getfruit() {
		// TODO Auto-generated method stub
		return new Orange();
	}
}
class BananaFactory implements Factory{
	public Fruit getfruit() {
		// TODO Auto-generated method stub
		return new Banana();
	}
}
public class FactoryFunction {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
			Factory factory = new AppleFactory();
			Fruit fruit = factory.getfruit();
			fruit.result();
	}

}

虽然工厂方法模式符合了“开放--封闭原则”,但是也因此增大了开发量,之后,我们会介绍应用反射技术的工厂模式。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值