带你探秘工厂模式(普通工厂,工厂方法,抽象工厂),Let‘s Go

在这里插入图片描述 在这里插入图片描述

1.普通工厂

通过定义公共接口创建公共规范,通过给工厂类的方法(通常是静态方法,所以也叫静态工厂)传不同的参数,实现创建不同的对象

简单实现

  • 定义车接口
public interface Car {
	void name();
}
  • 定义BWN类实现Car接口,重新name方法
public class BWM implements Car{
	@Override
	public void name() {
		// TODO Auto-generated method stub
		System.out.println("bwm");
	}
}
  • 定义Tesla类实现Car接口,重写name方法
public class Tesla implements Car{
	@Override
	public void name() {
		// TODO Auto-generated method stub
		System.out.println("Tesla");
	}	
}
  • 定义车工厂类CarFactory,通过传入不同的参数(调不同的构造函数) 创建相应得对象
public class CarFactory {
	public static Car getCar(String carString) {
		if (carString.equals("Tesla")) {
			return new Tesla();
		}
		else if (carString.equals("BWM")) {
			return new BWM();
		}
		else {
			return null;
		}
		
		//第二种实现
		public static Car getBWN(){
        	return new BWM();
        }

	    public static Car getTesla(){
	        return new Tesla();
	    }
	}
}
  • 测试,通过工厂创建tesla与bwn
public class Consumer {
   public static void main(String[] args) {
   	Car tesla = CarFactory.getCar("Tesla");
   	Car bwm = CarFactory.getCar("BWM");
   	tesla.name();
   	bwm.name();
   }
}
  • 结果
    在这里插入图片描述
小结

优点:

  • 逻辑简单,实现难度低
  • 只需要传入相应的参数给工厂类即可创建对应的对象
  • 将对象实现与使用分离,减小耦合

缺点:

  • 不符合开闭原则,增加功能必须修改代码
  • 在产品类型较多时,有可能造成工厂逻辑过于复杂,不利于系统的扩展和维护

适用场景:

  • 工厂方法中的业务逻辑简单,工厂类负责创建的对象比较少

  • 业务稳定的场景,不太需要增加其他业务


2.工厂方法
3.抽象工厂
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Free的午后

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值