设计模式之工厂方法模式

本人属于菜鸟级别的,文章中有错误的地方,敬请批评指正

不废话,进入主题

工厂方法模式:

(1)对于某个产品,调用者很清楚,要用哪个工厂去制造它

(2)对于某个产品,我只想创建这个产品,我不想知道是哪个工厂创建它的,用哪个工厂是别人的事,跟我没关系(这里的别人是生产者),但是你创建的过程要让我知道,举个例子,我想定制一辆法拉利,我不管这个汽车是意大利工厂生产的还是朝鲜工厂生产的大笑,我只给法拉利总店一个订单,让生产厂家根据订单,环境等决定用哪个工厂生产。但是我要知道你的决策过程。

例子:世界上有著名的手机工厂,诺基亚工厂,摩托罗拉工厂,苹果工厂,我想要一台诺基亚。

分析:一般的菜鸟想,哇,这个好简单,我只要创建一个诺基亚工厂,里面生产诺基亚就行了。但是世界上所有人都用诺基亚吗。记住,需求总是变化的,菜鸟!所以我们可以创建一个抽象工厂,让诺基亚工厂,苹果工厂继承它就行了。而且我们也要把手机抽象!

public class MobileTest {
    public static void main(String[] args){
    	MobileFactory mf = new NokiaFactory();
    	Mobile mobile = mf.produceMobile();
    	mobile.call();
    }
}

abstract class MobileFactory {
  abstract Mobile produceMobile();
}

public class NokiaFactory extends MobileFactory{
	@Override
	Mobile produceMobile() {
		System.out.println("produce Nokia!!!!");
		return new Nokia();
	}
}

abstract class Mobile {
  abstract void call();
}

public class Nokia extends Mobile{
	@Override
	void call() {
		System.out.println("this is Nokia");
	}
}

public class Apple extends Mobile{
	@Override
	void call() {
		System.out.println("This is IPhone");
	}
}


读完代码菜鸟肯定大呼过瘾,不过我们可以深入的思考一下,这种模式到底有什么好处!

工厂方法的核心是个抽象工厂,如果需要添加一个新产品,你完全不需要改代码了,只要添加这个产品的类和产品工厂的类就行了,你就能几分钟搞定去喝茶了。

反观简单工厂模式,如果需要添加一个新产品,你还要改代码,晕,菜鸟才去改代码。我们的目标是,“新的需求只要加新类,而不要改代码”



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值