设计模式-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

目录
打赏
0
0
0
0
226
分享
相关文章
【设计模式】工厂模式(定义 | 特点 | Demo入门讲解)
【设计模式】工厂模式(定义 | 特点 | Demo入门讲解)
140 2
|
3月前
|
「全网最细 + 实战源码案例」设计模式——抽象工厂模式
抽象工厂模式是一种创建型设计模式,提供接口用于创建一系列相关或依赖的对象,无需指定具体类。它解决了产品族问题,管理和创建一组相关产品。结构上包括抽象工厂、具体工厂、抽象产品和具体产品。适用于创建相关对象、产品族固定但种类变化的场景。优点是分离接口与实现、管理产品族方便且扩展性好;缺点是产品族扩展困难且代码复杂度增加。通过配置文件和反射机制可进一步改进,使系统更灵活易扩展。
87 17
|
10月前
|
**工厂模式与抽象工厂模式**都是创建型设计模式,用于封装对象创建,减少耦合
【6月更文挑战第23天】**工厂模式与抽象工厂模式**都是创建型设计模式,用于封装对象创建,减少耦合。工厂模式专注于单个对象,通过具体工厂创建具体产品,适用于简单对象创建;抽象工厂则关注一系列相关产品,提供创建一族对象的接口,适用于处理多个不兼容产品族。选择模式基于问题域的复杂性,单个产品需求时用工厂模式,多产品族时用抽象工厂模式。
57 5
Java设计模式-抽象工厂模式(5)
Java设计模式-抽象工厂模式(5)
设计模式-工厂模式 Factory Pattern(简单工厂、工厂方法、抽象工厂)
这篇文章详细解释了工厂模式,包括简单工厂、工厂方法和抽象工厂三种类型。每种模式都通过代码示例展示了其应用场景和实现方法,并比较了它们之间的差异。简单工厂模式通过一个工厂类来创建各种产品;工厂方法模式通过定义一个创建对象的接口,由子类决定实例化哪个类;抽象工厂模式提供一个创建相关或依赖对象家族的接口,而不需要明确指定具体类。
设计模式-工厂模式 Factory Pattern(简单工厂、工厂方法、抽象工厂)
Java 设计模式之谜:工厂模式与抽象工厂模式究竟隐藏着怎样的神奇力量?
【8月更文挑战第30天】在Java编程中,设计模式为常见问题提供了高效解决方案。工厂模式与抽象工厂模式是常用的对象创建型设计模式,能显著提升代码的灵活性、可维护性和可扩展性。工厂模式通过定义创建对象的接口让子类决定实例化哪个类;而抽象工厂模式则进一步提供了一个创建一系列相关或相互依赖对象的接口,无需指定具体类。这种方式使得系统更易于扩展和维护。
62 1
深入理解工厂模式与策略模式:设计模式的灵活应用
深入理解工厂模式与策略模式:设计模式的灵活应用
【三】设计模式~~~创建型模式~~~抽象工厂模式(Java)
文章详细介绍了抽象工厂模式,这是一种创建型设计模式,用于提供一个接口以创建一系列相关或相互依赖的对象,而不指定它们具体的类。通过代码示例和结构图,文章展示了抽象工厂模式的动机、定义、结构、优点、缺点以及适用场景,并探讨了如何通过配置文件和反射机制实现工厂的动态创建。
【三】设计模式~~~创建型模式~~~抽象工厂模式(Java)
设计模式-------------工厂模式之工厂方法模式(创建型)
工厂方法模式是一种创建型设计模式,它通过定义一个用于创建对象的接口,让子类决定实例化哪一个类,从而实现类的实例化推迟到子类中进行,提高了系统的灵活性和可扩展性。
设计模式----------工厂模式之简单工厂模式(创建型)
这篇文章详细介绍了简单工厂模式,包括其定义、应用场景、UML类图、通用代码实现、运行结果、实际应用例子,以及如何通过反射机制实现对象创建,从而提高代码的扩展性和维护性。
设计模式----------工厂模式之简单工厂模式(创建型)

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等