设计模式——抽象工厂模式(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;
   }
}

三、其他设计模式

创建型模式
结构型模式

行为型模式

相关推荐
wxwx_bscxy32211 小时前
基于springboot宠物领养系统的设计与实现
数据库·spring boot·后端·spring·宠物
cfm_291414 小时前
Spring事务
数据库·spring·oracle
跨境数据猎手17 小时前
京东开放平台商品详情接口(jd.item_get):签名、缓存与批量采集
java·spring·缓存
霸道流氓气质18 小时前
Spring AI提示词模板与动态变量替换
java·python·spring
码匠许师傅19 小时前
【设计模式精讲】15.享元模式(Flyweight)
c++·设计模式·享元模式·uml
Whyn19 小时前
Servlet 学习笔记
spring
ofoxcoding19 小时前
Claude Fable 5.1 API 接入指南:模型标识、五级定价策略、effort 参数与缓存 TTL 配置详解
java·spring·缓存·ai
事圆则缓19 小时前
Android 常用设计模式速查
android·设计模式
摇滚侠20 小时前
《SpringBoot 3:入门与应用实战》第 12 章 JDBC 与事务 Spring Framework 的事务管理 阅读笔记 34
spring boot·笔记·spring
霸道流氓气质1 天前
Spring AI异常处理与重试机制
java·人工智能·spring