创建型模式之简单工厂模式(java版)

1.为啥要去工厂搞斧头?

最开始人类需要斧头,得自己磨石头,自己造,也就是我们最开始玩的new对象的方式,其实我们只想用斧头,不想关心它是怎么造的,后来有了工厂的方式,我们只需和工厂说下需要什么斧头,工厂就帮我们搞出来了。然而最高的境界是我们需要斧头,有服务人员自动送到你手上,可能这就是spring的核心依赖注入吧,磕得打住,这篇博文只唠简单工厂模式,所以主要特点就是为了省事。

2.工厂是如何按你的要求把斧头造出来,交给你?

--2.1提供了制造斧头的接口(这个网上叫做抽象产品):

//实现制造斧头的接口
public interface Axe {
	//制造
        public void make();
}

--2.2加入制造斧头的材料,最终通过实现造斧头的接口来造出一把斧头(这个网上叫做具体产品):

public class SteelAxe implements Axe{

	@Override
	public void make() {
		// TODO Auto-generated method stub
		System.out.println("制造出来了钢斧!");
	}

}
public class StoneAxe implements Axe{

	@Override
	public void make() {
		// TODO Auto-generated method stub
		System.out.println("制造出来了石斧!");
	}
}
public class WoodenAxe implements Axe{

	@Override
	public void make() {
		// TODO Auto-generated method stub
		System.out.println("制造出来了木斧!");
	}
}

上面就把各种斧头都实现了,我的要求是:”工厂给我提供一个我需要类型的斧头“。所以就需要实现工厂类了。

--2.3如何根据需要,提供一把斧头:

public class AxeFactory {
	
	public static Axe makeAxe(String axeName){
		Axe axe=null;
		switch(axeName){
		case "钢斧":
			axe=new SteelAxe();
			break;
		case "石斧":
			axe=new StoneAxe();
			break;
		case "木斧":
			axe=new WoodenAxe();
			break;
		}
		return axe;
	}
}
这样就可以由我输入需要的什么类型的斧头,工厂给我返回需要的斧头。

--2.4这工厂到底靠谱不,测试类:

public class AxeTest {

	public static void main(String[] args) {
		Axe axe=AxeFactory.makeAxe("木斧");
		axe.make();
	}
}
打印结果:

制造出来了木斧!

3.这种简单工厂模式好不好啊?

--3.1好处:

简单工厂模式的好处是逻辑判断都实现在了工厂类中,可以根据用户的选择条件,动态的实例化需要的类,并且对于用户来说,它和工厂类没什么依赖,就是一个斧头关系,其他制造啥的与用户无关。

--3.2坏处:

简单工厂模式的效率不高啊,如果用户需要一把金斧,除了Axe接口不改,剩下的都要大改,总的来说就是不利于扩展,扩展性差,
其实就是违反了开-闭原则(对扩展开放,对修改封闭)。而此时需要金斧就得对修改开放。

----------------------------------------------

如果有的地方比喻不恰当,请看友指出。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值