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

三、其他设计模式

创建型模式
结构型模式

行为型模式

相关推荐
将编程培养成爱好28 分钟前
C++ 设计模式《账本事故:当备份被删光那天》
开发语言·c++·设计模式·备忘录模式
FogLetter2 小时前
设计模式奇幻漂流:从单例孤岛到工厂流水线
前端·设计模式
代码栈上的思考3 小时前
Spring MVC 中 @RequestMapping 路径映射与请求处理全流程
java·spring·mvc
WZTTMoon3 小时前
Spring MVC 核心工作原理:DispatcherServlet 全流程深度解析
java·spring·mvc
计算机学姐3 小时前
基于SpringBoot的新闻管理系统【协同过滤推荐算法+可视化统计】
java·vue.js·spring boot·后端·spring·mybatis·推荐算法
大菠萝学姐4 小时前
基于springboot的旅游攻略网站设计与实现
前端·javascript·vue.js·spring boot·后端·spring·旅游
珹洺5 小时前
Java-Spring入门指南(二十九)Android交互核心:按钮点击事件与Activity跳转实战
android·java·spring
没有bug.的程序员7 小时前
Spring Cloud Gateway 路由与过滤器机制
java·开发语言·spring boot·spring·gateway
guangzan7 小时前
常用设计模式:代理模式
设计模式
西幻凌云8 小时前
认识设计模式——单例模式
c++·单例模式·设计模式·线程安全·饿汉和懒汉