在业务中,对于业务对象的创建并不一定是简单的一个类,一个业务对象可能并不能确定为某个类而是一系列类,包含了一系列操作,需要创建一系列实例,get和set一系列变量
1、简单工厂模式
又称静态工厂方法模式,它存 在的目的很简单:定义一个用于创建对象的接口
public class Driver{
//工厂方法.注意 返回类型为抽象产品角色
public static Car driverCar(String s)throws Exception {
//判断逻辑,返回具体的产品角色给 Client
if(s.equalsIgnoreCase("Benz"))
return new Benz();
else if(s.equalsIgnoreCase("Bmw"))
return new Bmw();
......
else throw new Exception();
public class Magnate{
public static void main(String[] args){
try{
//告诉司机我今天坐奔驰
Car car = Driver.driverCar("benz");
//下命令:开车
car.drive();
开闭原则评估:在业务加入一个新的类时,需要在工厂内变动逻辑操作
2、工厂方法模式
把简单工厂和产品写成接口,不同类型对象的创建用继承了这个接口的工厂实现
public interface Driver{
public Car driverCar();
}
public class BenzDriver implements Driver{
public Car driverCar(){
return new Benz();
}
}
public class BmwDriver implements Driver{
public Car driverCar() {
return new Bmw();
}
}
public class Magnate
{
public static void main(String[] args)
{
try{
Driver driver = new BenzDriver();
Car car = driver.driverCar();
car.drive();
}
……
}
相当于给简单工厂派了几个手下,让他们定义相应的方法,负责相应的类对象的创建,因此叫做工厂方法模式
使用情况:
- 当客户程序不需要知道要使用对象的创建过程。
- 客户程序使用的对象存在变动的可能,或者根本就不知道使用哪一个具体的对象。
开闭原则评估:当更新了创建对象的条件,比如一次要在不同工厂内负责创建的对象各挑一个出来创建,就必须修改工厂的组织
3、抽象工厂模式
产品族:位于不同产品等级结构中,功能相关联的产品组成的家族。 还是让我们用一个例子来形象地说明一下吧
抽象工厂模式的用意为:给客户端提供一个接口,可以创建多个产品族中的产品对象
结构: