Java设计模式之 简单工厂模式,简单易于理解

简单工厂模式:

一、 概念

简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。

具体分类
1. 工厂(Creator)角色 简单工厂模式的核心,
它负责实现创建所有实例的内部逻辑。工厂类可以被外界直接调 用,创建所需的产品对象。
2. 抽象(Product)角色
简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。
3. 具体产品(ConcreteProduct)角色
简单工厂模式所创建的具体实例对象

二、代码
1、创建一个接口 生产水果
在这里插入图片描述
2、创建两个具体对象,苹果和梨
在这里插入图片描述
在这里插入图片描述
3、创建一个测试类
(1 第一种测试方法,new一个对象
在这里插入图片描述
(2 第二种测试方法 使用接口实现多态
在这里插入图片描述
4、现在进入简单工厂模式
首先创建一个工厂类 fruitfactory.Java
(1 、第一种 简单工厂
在这里插入图片描述
调用测试
在这里插入图片描述
由上面地址发现,每次调用都会更新再调用
现在把简单工厂方法换成静态的
在这里插入图片描述
测试一下:
在这里插入图片描述
好像没什么变化,一样是更新了,但是,静态和非静态是有区别的,下面是我查到的区别

static方法可以通过类名访问,也可以通过类的实例访问。
static方法不能访问类中非static的数据。
比如
class A
{
static void F(){}
};
在main函数中可以
A a;
a.F();
也可以
A.F();
普通方法又叫实例方法,只能通过类的实例访问。
他只能a.F();
一个JAVA类被加载的顺序:
1.加载静态成员、代码块
2.加载非静态成员、代码块
3.调用构造方法。

原文链接:https://blog.csdn.net/xiaoshe200/article/details/6181341

(2、通用的工厂方法,通过相关的名称就能返回
在这里插入图片描述
测试一下:
在这里插入图片描述
三、优缺点
简单工厂有以下优点。

帮助封装
简单工厂虽然很简单,但是非常友好地帮助我们实现了组件的封装,然后让组件外部能真正面向接口编程。

解耦

通过简单工厂,实现了客户端和具体实现类的解耦。
如同上面的例子,客户端根本就不知道具体是由谁来实现,也不知道具体是如何实现的,客户端只是通过工厂获取它需要的接口对象。

简单工厂有以下缺点。

可能增加客户端的复杂度
如果通过客户端的参数来选择具体的实现类,那么就必须让客户端能理解各个参数所代表的具体功能和含义,这样会增加客户端使用的难度,也部分暴露了内部实现,这种情况可以选用可配置的方式来实现。

不方便扩展子工厂

私有化简单工厂的构造方法,使用静态方法来创建接口,也就不能通过写简单工厂类的子类来
改变创建接口的方法的行为了。不过,通常情况下是不需要为简单工厂创建子类的。

简单来说就是耦合度比较低,下面解上面的例子,增加一个对象香蕉
增加对象香蕉:
在这里插入图片描述
工厂要改变
在这里插入图片描述
测试类
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44001568/article/details/105067611
今日推荐