设计模式-11-工厂模式-3-抽象工厂模式

简介: 抽象工厂模式是工厂方法模式的升级版本,工厂方法模式的工厂是创建出一种产品,而抽象工厂是创建出一类产品。

  抽象工厂模式是工厂方法模式的升级版本,工厂方法模式的工厂是创建出一种产品,而抽象工厂是创建出一类产品。

       比如我们前面普通工厂模式中学习的画图,正方形产品对应正方形的工厂,圆形对应圆形的工厂,每个产品对应一个工厂。比如我们现在要画多个颜色的图形,那么不同颜色的圆形就是一个系列,抽象工厂模式就可以实现一个工厂对应一个图形颜色系列。

       白色系列有圆形、正方形两个产品,红色系列也有圆形、正方形两个产品。现在用抽象工厂模式来创建一下这两个系列的产品。

一、首先建立圆形产品:

package com.xing.design.factory.shape.ab.shape;

/**

*  圆形产品

* @author xing

*/

public abstract class Circle{

public abstract void draw();

}

// 圆形的红色系列

package com.xing.design.factory.shape.ab.shape;

/**

*  圆形红色系列

* @author xing

*/

public class RedCircle extends Circle{

@Override

public void draw() {

   System.out.println("画一个红色圆形。。。");

 }

}


// 圆形的白色系列

package com.xing.design.factory.shape.ab.shape;

/**

*  圆形产品

* @author xing

*/

public class WhiteCircle extends Circle{

@Override

public void draw() {

   System.out.println("画一个白色圆形。。。");

 }

}

二、再建立正方形产品

package com.xing.design.factory.shape.ab.shape;

/**

*  正方形产品

* @author xing

*/

public abstract class Square{

public abstract void draw();

}

// 正方形的红色系列

package com.xing.design.factory.shape.ab.shape;

/**

*  红色正方形

* @author xing

*/

public class RedSquare extends Square{

@Override

public void draw() {

   System.out.println("画一个红色正方形。。。");

 }

}

// 正方形的白色系列

package com.xing.design.factory.shape.ab.shape;

/**

*  白色正方形

* @author xing

*/

public class WhiteSquare extends Square{

@Override

public void draw() {

   System.out.println("画一个白色正方形。。。");

 }

}

三、建立抽象工厂

package com.xing.design.factory.shape.ab.factory;


import com.xing.design.factory.shape.ab.shape.Circle;

import com.xing.design.factory.shape.ab.shape.Square;


/**

*  抽象工厂模式

* @author xing

*/

public interface AbstractFactory {

// 获取圆形实例对象

Circle getCircle();

// 获取正方形实例对象

Square getSquare();

}

1.红色系列的工厂,用来获取红色系列产品

package com.xing.design.factory.shape.ab.factory;


import com.xing.design.factory.shape.ab.shape.Circle;

import com.xing.design.factory.shape.ab.shape.RedCircle;

import com.xing.design.factory.shape.ab.shape.RedSquare;

import com.xing.design.factory.shape.ab.shape.Square;


public class RedFactory implements AbstractFactory {

@Override

public Circle getCircle() {

return new RedCircle();

 }

@Override

public Square getSquare() {

return new RedSquare();

 }

}

2.白色系列的工厂,用来获取白色系列产品

package com.xing.design.factory.shape.ab.factory;


import com.xing.design.factory.shape.ab.shape.Circle;

import com.xing.design.factory.shape.ab.shape.Square;

import com.xing.design.factory.shape.ab.shape.WhiteCircle;

import com.xing.design.factory.shape.ab.shape.WhiteSquare;


public class WhiteFactory implements AbstractFactory {

@Override

public Circle getCircle() {

return new WhiteCircle();

 }

@Override

public Square getSquare() {

return new WhiteSquare();

 }

}

四、测试:

package com.xing.design.factory.shape.ab;


import com.xing.design.factory.shape.ab.factory.RedFactory;

import com.xing.design.factory.shape.ab.factory.WhiteFactory;


public class ABDemo {

public static void main(String[] args) {

   RedFactory redFactory = new RedFactory();

   redFactory.getCircle().draw();

   redFactory.getSquare().draw();


   WhiteFactory whiteFactory = new WhiteFactory();

   whiteFactory.getCircle().draw();

   whiteFactory.getSquare().draw();

 }

}

       核心代码是抽象工厂及其工厂实现类,每一个产品的每一个系列,都要在其中添加并实现。


总结:

       抽象工厂模式就是在抽象工厂中添加每一个产品,然后按照不同系列添加工厂实现类,并在实现类中能获取到每一个产品,通过这个系列的工厂实现类,创建出每一个系列下的产品。


END

目录
相关文章
|
13天前
|
设计模式 测试技术
【设计模式系列笔记】工厂模式
工厂模式是一种创建型设计模式,其主要目的是将对象的创建过程抽象出来,以便在需要的时候由子类来实现。这种模式提供了一种方法,通过调用一个共同的接口来创建一组相关或依赖的对象,而无需指定其具体的类。
109 4
|
5月前
|
设计模式 Java
Java设计模式【三】:抽象工厂模式
Java设计模式【三】:抽象工厂模式
21 0
|
13天前
|
设计模式 Java
【设计模式系列笔记】抽象工厂模式
抽象工厂模式(Abstract Factory Pattern)是一种设计模式,属于创建型模式之一。它提供了一种方式来创建一系列相关或相互依赖的对象,而无需指定它们具体的类。抽象工厂模式通过引入抽象的工厂接口,使得客户端代码可以使用抽象的接口来创建一组相关的产品,而不关心这些产品的具体实现。
107 4
|
5天前
|
设计模式 安全 Java
【设计模式学习】单例模式和工厂模式
【设计模式学习】单例模式和工厂模式
|
6天前
|
设计模式 Java
Java 设计模式:工厂模式与抽象工厂模式的解析与应用
【4月更文挑战第27天】设计模式是软件开发中用于解决常见问题的典型解决方案。在 Java 中,工厂模式和抽象工厂模式是创建型模式中非常核心的模式,它们主要用于对象的创建,有助于增加程序的灵活性和扩展性。本博客将详细介绍这两种模式的概念、区别以及如何在实际项目中应用这些模式。
11 1
|
1月前
|
设计模式 Java Windows
23种设计模式,抽象工厂模式的概念优缺点以及JAVA代码举例
【4月更文挑战第10天】抽象工厂模式是一种创建型设计模式,它提供了一个接口用于创建相关或依赖对象的家族,而不需要指定具体类。该模式允许客户端在不知道具体类的情况下,通过其共同的接口来创建一组产品。
30 7
|
2月前
|
设计模式 关系型数据库 数据库
【C++ 设计模式 工厂模式对比】深入探索设计模式:工厂方法与抽象工厂的比较与对照
【C++ 设计模式 工厂模式对比】深入探索设计模式:工厂方法与抽象工厂的比较与对照
22 1
|
4月前
|
设计模式 安全 数据库
创建型设计模式-单例模式/工厂模式/抽象工厂
创建型设计模式-单例模式/工厂模式/抽象工厂
38 0
|
4月前
|
设计模式 Oracle 关系型数据库
设计模式 | 抽象工厂模式
设计模式 | 抽象工厂模式
25 0
|
4月前
|
设计模式 Go 开发工具
Golang设计模式——02抽象工厂模式
Golang设计模式——02抽象工厂模式
23 0