抽象工厂模式
简单工厂模式类图:
示例UML类:
示例实现:
package com.kkb.dp.factory.abstracts.product;
/**
* @date 2021年4月14日
* @describe 轿车体系
*/
public interface ICar {
public String getName();
}
package com.kkb.dp.factory.abstracts.product;
/**
* @date 2021年4月14日
* @describe SUV体系
*/
public interface ISUV {
public String getName();
}
package com.kkb.dp.factory.abstracts.product;
public class BenzCar implements ICar{
@Override
public String getName() {
// TODO Auto-generated method stub
return "奔驰轿车";
}
}
package com.kkb.dp.factory.abstracts.product;
public class BMWCar implements ICar{
@Override
public String getName() {
// TODO Auto-generated method stub
return "宝马轿车";
}
}
package com.kkb.dp.factory.abstracts.product;
public class BenzSUV implements ISUV{
@Override
public String getName() {
// TODO Auto-generated method stub
return "奔驰SUV";
}
}
package com.kkb.dp.factory.abstracts.product;
public class BMWSuv implements ISUV{
@Override
public String getName() {
// TODO Auto-generated method stub
return "宝马SUV";
}
}
package com.kkb.dp.factory.abstracts.factory;
import com.kkb.dp.factory.abstracts.product.ICar;
import com.kkb.dp.factory.abstracts.product.ISUV;
/**
* @date 2021年4月14日
* @describe 抽象工厂
*/
public interface AbstractFactory {
public abstract ICar createCar();
public abstract ISUV createSUV();
}
package com.kkb.dp.factory.abstracts.factory;
import com.kkb.dp.factory.abstracts.product.BenzCar;
import com.kkb.dp.factory.abstracts.product.BenzSUV;
import com.kkb.dp.factory.abstracts.product.ICar;
import com.kkb.dp.factory.abstracts.product.ISUV;
/**
* @date 2021年4月14日
* @describe 奔驰族工厂
*/
public class BenzFactory implements AbstractFactory {
@Override
public ICar createCar() {
// TODO Auto-generated method stub
return new BenzCar();
}
@Override
public ISUV createSUV() {
// TODO Auto-generated method stub
return new BenzSUV();
}
}
package com.kkb.dp.factory.abstracts.factory;
import com.kkb.dp.factory.abstracts.product.BMWCar;
import com.kkb.dp.factory.abstracts.product.BMWSuv;
import com.kkb.dp.factory.abstracts.product.ICar;
import com.kkb.dp.factory.abstracts.product.ISUV;
/**
* @date 2021年4月14日
* @describe 宝马族工厂
*/
public class BMWFactory implements AbstractFactory{
@Override
public ICar createCar() {
// TODO Auto-generated method stub
return new BMWCar();
}
@Override
public ISUV createSUV() {
// TODO Auto-generated method stub
return new BMWSuv();
}
}
package com.kkb.dp.factory.abstracts.factory;
import com.kkb.dp.factory.abstracts.product.ICar;
import com.kkb.dp.factory.abstracts.product.ISUV;
/**
* 抽象工厂模式实现测试类
* @date 2021年4月14日
* @describe
*/
public class Test {
public static void main(String[] args) {
ICar c1 = new BenzFactory().createCar();
System.out.println(c1.getName());
ICar c2 = new BMWFactory().createCar();
System.out.println(c2.getName());
ISUV c3 = new BenzFactory().createSUV();
System.out.println(c3.getName());
ISUV c4 = new BMWFactory().createSUV();
System.out.println(c4.getName());
}
}
测试类运行结果:
奔驰轿车
宝马轿车
奔驰SUV
宝马SUV