简单工程模式

简介: 在开始说工厂模式之前先说说面向对象。面向对象有三大特性:封装、继承、多态。面向对象的好处1、面向对象的封装思想可以减低代码的耦合度,使程序更加灵活,容易修改,并且易于复用。

在开始说工厂模式之前先说说面向对象。

面向对象有三大特性:封装、继承、多态。

面向对象的好处

1、面向对象的封装思想可以减低代码的耦合度,使程序更加灵活,容易修改,并且易于复用。编程应该尽可能的去避免重复,否则越大的系统,维护成本会越高。
2、为了 方便维护管理,应该把业务逻辑代码和功能代码分开,减低它们之间的耦合度,菜可以达到容易维护和扩展。

简单工厂模式

简单工厂模式 (Simple Factory) 又叫静态工厂方法(Static Factory Method)模式。
简单工厂模式通常是定义一个工厂类,这个类可以根据不同变量返回不同类的产品实例。
简单工厂模式是一种对象创建型模式 。但是简单工厂模式不属于23种Gof设计模式之一。

Product (Operation) : 产品角色,简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。

// Product角色,所有实例所共有的公共接口
abstract class Operation {
    public int numA;
    public int numB;
    public abstract int GetResult();
}

ConcreteProduct组 : 具体产品角色,实现 Product 中的接口。

// 工厂角色,简单工厂模式的核心,它负责实现创建所有实例的内部逻辑

class OperationFactory {

    public static Operation CreateOperation (char operate) {

        Operation oper = null;

        switch(operate) {

        case '+':

            oper = new Add();

            break;

        case '-':

            oper = new Sub();

            break;

        case '*':

            oper = new Mul();

            break;

        case '/':

            oper = new Div();

            break;

        default:

            break;

        }

        return oper;

    }

}

测试代码

public class SimpleFactoryPattern {
    public static void main(String[] args) {
        int numA = 10;
        int numB = 3;
        int result = 0;
        Operation oper = OperationFactory.CreateOperation('+');
        oper.numA = numA;
        oper.numB = numB;
        result = oper.GetResult();
        System.out.println(numA + " + " + numB + " = " + result);
    }
}

优点

简单工厂模式的工厂类是整个模式的关键。其中包含了必要的逻辑判断,根据外部信息,决定究竟应该创建哪个具体类的对象。
通过使用简单工厂模式,用户无需了解对象如何创建的,只要传入必要信息就可以了。

缺点

工厂类集中了所有实例的创建逻辑,违背了高内聚责任分配原则。
随着系统中具体产品类不断增多,势必要不断修改工厂类,不易维护和扩展。同时,这也违背了开放封闭原则。

另外贴上一个个UML类图图示样例

这里写图片描述

一、类图

矩形框代表类,类图分三层

1、第一层显示类的名称,如果是抽象类,则用斜体显示。

2、第二层是类的 特性,通常就是字段和属性。

3、第三层是类的 操作,通常是方法或行为。注意 ‘+’ 表示 public,’-’ 表示 private,’#’ 表示 protected 。

二、接口

接口图与类图的区别主要是顶端有<>显示。

1、第一行是接口的名称。

2、第二行是接口的方法,接口还要一种表示方法,俗称棒棒糖表示法,就是唐老鸭类实现了‘讲人话’的接口。

三、类与类,类与接口之间的关系

1、继承关系用 空心三角 + 实线 来表示。

2、实现接口用实心三角形+ 虚线来表示。

3、关联关系用实线箭头来表示。

4、聚合关系用空心的菱形 + 实线 箭头来表示。

聚合关系表示一种 弱 的 “拥有” 关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分。

5、合成\组合关系用实心的菱形 + 实线箭头 来表示。

组合是一种 强 的 “拥有” 关系,体现了严格的部分和整体的关系,部分和整体的生命周期一样。
合成关系的连接线两端还有数字,这被称为:基数。表明这一端的类可以有几个实例。如果一个类可能有无数个实例,就用“n”来表示。关联关系、聚合关系也可以有基数。

6、依赖关系用虚线箭头来表示。

目录
相关文章
|
设计模式
【状态模式】拯救if-else堆出来的屎山代码
【状态模式】拯救if-else堆出来的屎山代码
337 0
|
机器学习/深度学习 数据挖掘
机器学习之聚类——谱聚类简介及其对特殊形状区域数据的聚类
机器学习之聚类——谱聚类简介及其对特殊形状区域数据的聚类
241 0
|
Java
exe4j的使用
下载:http://download.cnet.com/exe4j/3000-2070_4-144405.html 参考:http://blog.chinaunix.net/uid-25749806-id-4380850.
876 0
|
网络协议 Java Linux
Linux 学习笔记
Linux学习笔记 请切换web视图查看,表格比较大,方法:视图》》web板式视图 博客园不能粘贴图片吗  http://wenku.baidu.com/view/bda1c3067fd5360cba1adb7d 目录 Linux学习笔记.
1464 0
|
4天前
|
人工智能 JSON 监控
Claude Code 源码泄露:一份价值亿元的 AI 工程公开课
我以为顶级 AI 产品的护城河是模型。读完这 51.2 万行泄露的源码,我发现自己错了。
3845 8
|
14天前
|
人工智能 JSON 机器人
让龙虾成为你的“公众号分身” | 阿里云服务器玩Openclaw
本文带你零成本玩转OpenClaw:学生认证白嫖6个月阿里云服务器,手把手配置飞书机器人、接入免费/高性价比AI模型(NVIDIA/通义),并打造微信公众号“全自动分身”——实时抓热榜、AI选题拆解、一键发布草稿,5分钟完成热点→文章全流程!
11543 130
让龙虾成为你的“公众号分身” | 阿里云服务器玩Openclaw
|
3天前
|
人工智能 数据可视化 安全
王炸组合!阿里云 OpenClaw X 飞书 CLI,开启 Agent 基建狂潮!(附带免费使用6个月服务器)
本文详解如何用阿里云Lighthouse一键部署OpenClaw,结合飞书CLI等工具,让AI真正“动手”——自动群发、生成科研日报、整理知识库。核心理念:未来软件应为AI而生,CLI即AI的“手脚”,实现高效、安全、可控的智能自动化。
1385 5
王炸组合!阿里云 OpenClaw X 飞书 CLI,开启 Agent 基建狂潮!(附带免费使用6个月服务器)
|
14天前
|
人工智能 IDE API
2026年国内 Codex 安装教程和使用教程:GPT-5.4 完整指南
Codex已进化为AI编程智能体,不仅能补全代码,更能理解项目、自动重构、执行任务。本文详解国内安装、GPT-5.4接入、cc-switch中转配置及实战开发流程,助你从零掌握“描述需求→AI实现”的新一代工程范式。(239字)
7773 139