Java设计模式学习-抽象工厂模式
抽象工厂模式
- 用来生产不同产品族的全部产品 。 (对于增加新的产品,无能为力,支持增加产品族)
- 抽象工厂模式是工厂方法模式的升级版本 , 在有多个业务品种 , 业务分类时 , 通过抽象工厂模式产生需要的对象是一种非常好的解决方式 。
1),创建发动机类接口,并创建它的俩个实现类如下
/**发动机接口
* @author 晓电脑
*/
public interface Engline {
void start();
}
/**
* 低端汽车发动机
*/
class LowEngline implements Engline{
@Override
public void start() {
System.out.println("启动慢");
}
}
/**
* 高端汽车发动机
*/
class HigEndEngline implements Engline {
@Override
public void start() {
System.out.println("启动快");
}
}
2),创建轮胎类接口 ,并创建它的俩个实现类如下
/**轮胎接口
* @author 晓电脑
*/
public interface Tyre {
void abrasion();
}
/**
* 低配轮胎
*/
class lowTyre implements Tyre{
@Override
public void abrasion() {
System.out.println("轮胎磨损快");
}
}
/**
* 高配轮胎
*/
class HighEndTyre implements Tyre{
@Override
public void abrasion() {
System.out.println("轮胎无磨损");
}
}
3),创建座椅接口,并创建它的俩个实现类如下
/**座椅接口
* @author 晓电脑
*/
public interface Chair {
void message();
}
/**
* 低端座椅
*/
class LowChair implements Chair{
@Override
public void message() {
System.out.println("座椅没有按摩功能");
}
}
/**
* 高端座椅
*/
class HigEndChair implements Chair{
@Override
public void message() {
System.out.println("座椅自带按摩功能");
}
}
4),创建车类的工厂类接口 ,并创建俩个它的实现类如下
/**创建车工厂类 接口
* @author 晓电脑
*/
public interface CarFactory {
//创建座椅
Chair createChair();
//创建轮胎
Tyre createTyre();
//创建发动机
Engline createEnline();
}
/**
* 低端汽车
*/
class LowCarFactory implements CarFactory{
@Override
public Chair createChair() {
return new LowChair();
}
@Override
public Tyre createTyre() {
return new lowTyre();
}
@Override
public Engline createEnline() {
return new LowEngline();
}
}
/**
* 高端汽车
*/
class HigEndCarFactory implements CarFactory{
@Override
public Chair createChair() {
return new HigEndChair();
}
@Override
public Tyre createTyre() {
return new HighEndTyre();
}
@Override
public Engline createEnline() {
return new HigEndEngline();
}
}
5),创建 Client 客户端进行测试
/**测试客户端
* @author 晓电脑
*/
public class Client {
public static void main (String[] args) {
//创建高端汽车工厂类
HigEndCarFactory factory = new HigEndCarFactory();
//座椅
Chair chair = factory.createChair();
chair.message();
//发动机
Engline enline = factory.createEnline();
enline.start();
//轮胎
Tyre tyre = factory.createTyre();
tyre.abrasion();
}
}
我们来绘制这个uml类图, 如下
工厂模式要点总结:
- 简单工厂模式(静态工厂模式) --> 虽然某种程度不符合设计原则 ,单实际使用最多 。
- 工厂方法模式 --> 不修改已有类的前提下 , 通过增加新的工厂类实现扩展 。
- 抽象工厂模式 --> 不可以增加产品 , 可以增加产品族 !