史上最简单的工厂模式详解

工厂模式是初学者比较费解的模式之一,首先讲讲什么情景下需要工厂模式

1. 当你的系统工程量达到一定级别,需要new很多相似类的时候,你需要考虑此事是否需要借助工厂模式。

2. 类改名字或者更改其构造函数参数是很常见的,当系统特别庞大时,这项工程会让人欲哭无泪。


工厂模式一般有两种实现方式: 简单工厂 和 工厂方法


简单工厂是由3个要素构成: 1 抽象产品角色 2. 具体产品角色 3. 工厂角色

 /**
 * 抽象产品角色
 * @author c_qinshouzhi
 *
 */
public interface Car {
public void driveCar();
}



/**
 * 具体产品角色
 * @author c_qinshouzhi
 *
 */
public class Benz implements Car{


@Override
public void driveCar() {
System.out.println("Drive Benz");
}


}




/**
 * 工厂类角色
 * @author c_qinshouzhi
 *
 */
public class CarFactory {


public CarFactory() {
}

public static Car konwCar(String carName){
if(carName.equals("be")){
return new Benz();
}
if(carName.equals("bm")){
return new Bmw();
}
return null;
}
}



是不是简单易懂? 直接调用就行

Car car = CarFactory.konwCar("bm");
car.driveCar();



因为简单工厂并不满足开闭原则,所以就出现了工厂模式,是由4个要素构成


1. 抽象工厂角色 2.具体工厂角色 3. 抽象产品角色 4. 具体产品角色


换句话说就是将简单工厂中的工厂角色再次分为抽象工厂角色和具体工厂角色


/**
 * 抽象工厂类
 * @author c_qinshouzhi
 *
 */
public interface CarDriverFactory {
public  Car getCar();
}


/**
 * 具体工厂
 * @author c_qinshouzhi
 *
 */
public class BmwDriverFactory implements CarDriverFactory{


public Car getCar() {
return new Bmw();
}


}


直接调用  CarDriverFactory cf2 = new BmwDriverFactory();
                cf2.getCar().driveCar();


不懂加我微信 18221051908

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值