设计模式——抽象工厂模式(Abstract Factory Pattern)+ Spring相关源码

文章目录

  • 一、抽象工厂模式
  • 二、例子
    • [2.1 菜鸟教程例子](#2.1 菜鸟教程例子)
      • [2.1.1 定义被创建对象------形状](#2.1.1 定义被创建对象——形状)
      • [2.1.2 定义被创建对象------颜色](#2.1.2 定义被创建对象——颜色)
      • [2.1.3 定义抽象工厂类](#2.1.3 定义抽象工厂类)
  • 三、其他设计模式

一、抽象工厂模式

类型: 创建型模式
目的: 可以将对象的创建使用 代码分离,提供多个接口创建相关类型的对象

二、例子

2.1 菜鸟教程例子

2.1.1 定义被创建对象------形状

java 复制代码
public interface Shape {
   void draw();
}
java 复制代码
public class Rectangle implements Shape {
 
   @Override
   public void draw() {
      System.out.println("Inside Rectangle::draw() method.");
   }
}
java 复制代码
public class Circle implements Shape {
 
   @Override
   public void draw() {
      System.out.println("Inside Circle::draw() method.");
   }
}

2.1.2 定义被创建对象------颜色

java 复制代码
public interface Color {
   void fill();
}
java 复制代码
public class Red implements Color {
 
   @Override
   public void fill() {
      System.out.println("Inside Red::fill() method.");
   }
}
java 复制代码
public class Green implements Color {
 
   @Override
   public void fill() {
      System.out.println("Inside Green::fill() method.");
   }
}

2.1.3 定义抽象工厂类

该抽象工厂类可以创建形状颜色

java 复制代码
public abstract class AbstractFactory {
   public abstract Color getColor(String color);
   public abstract Shape getShape(String shape);
}

形状工厂

java 复制代码
public class ShapeFactory extends AbstractFactory {
    
   @Override
   public Shape getShape(String shapeType){
      if(shapeType == null){
         return null;
      }        
      if(shapeType.equalsIgnoreCase("CIRCLE")){
         return new Circle();
      } else if(shapeType.equalsIgnoreCase("RECTANGLE")){
         return new Rectangle();
      }
      return null;
   }
   
   @Override
   public Color getColor(String color) {
      return null;
   }
}

颜色工厂

java 复制代码
public class ColorFactory extends AbstractFactory {
    
   @Override
   public Shape getShape(String shapeType){
      return null;
   }
   
   @Override
   public Color getColor(String color) {
       if(color== null){
         return null;
      }        
      if(color.equalsIgnoreCase("Red")){
         return new Red();
      } else if(color.equalsIgnoreCase("Green")){
         return new Green();
      }
      return null;
   }
}

三、其他设计模式

创建型模式
结构型模式

行为型模式

相关推荐
命中的缘分27 分钟前
SpringCloud原理和机制
后端·spring·spring cloud
Howard_Stark31 分钟前
Spring的BeanFactory和FactoryBean的区别
java·后端·spring
再拼一次吧2 小时前
Spring进阶篇
java·后端·spring
fanTuanye3 小时前
Spring-全面详解(学习总结)
java·spring·ssm框架
学习机器不会机器学习4 小时前
深入浅出JavaScript常见设计模式:从原理到实战(2)
开发语言·javascript·设计模式
碎梦归途4 小时前
23种设计模式-行为型模式之命令模式(Java版本)
java·开发语言·jvm·设计模式·命令模式·行为型模式
m0_564264185 小时前
springboot项目之websocket的坑:spring整合websocket后进行单元测试后报错的解决方案
java·经验分享·spring boot·websocket·spring·单元测试·报错
冼紫菜5 小时前
SpringBoot配置RestTemplate并理解单例模式详解
java·spring boot·后端·spring·单例模式
mask哥7 小时前
实用的java技术架构组件汇总
java·spring·微服务·springboot·vo校验·常用java组件
〆、风神7 小时前
从零搭建高可用分布式限流组件:设计模式与Redis令牌桶实践
redis·分布式·设计模式