JAVA设计模式——简单工厂模式案例实现
Posted 北溟溟
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA设计模式——简单工厂模式案例实现相关的知识,希望对你有一定的参考价值。
前言
简单工厂模式是工厂模式的一种,又叫静态工厂模式。其通过专门定义一个工厂类来创建具有同一个父类的子类方法实例,通过静态方式创建子类对象实例。
正文
①创建一个发送消息的接口
package com.yundi.atp.dp.factory.simple;
/**
* @Author: 北溟溟
* @Description: 消息类接口
* @Date: 2022/3/13 9:54
* @Version: 1.0.0
*/
public interface IMessage
/**
* 定义一个sayHello接口
*
* @param name :用户
*/
void sayHello(String name);
②实现消息接口
微信方式实现sayHello
package com.yundi.atp.dp.factory.simple;
/**
* @Author: 北溟溟
* @Description:使用微信方式实现sayHello
* @Date: 2022/3/13 9:56
* @Version: 1.0.0
*/
public class WeChatMessage implements IMessage
@Override
public void sayHello(String name)
System.out.println("微信方式: " + name + " say hello!");
qq方式实现sayHello
package com.yundi.atp.dp.factory.simple;
/**
* @Author: 北溟溟
* @Description: qq方式实现sayHello
* @Date: 2022/3/13 9:56
* @Version: 1.0.0
*/
public class QqMessage implements IMessage
@Override
public void sayHello(String name)
System.out.println("QQ方式: " + name + " say hello!");
钉钉方式实现sayHello
package com.yundi.atp.dp.factory.simple;
/**
* @Author: 北溟溟
* @Description:钉钉方式实现sayHello
* @Date: 2022/3/13 9:56
* @Version: 1.0.0
*/
public class DingdingMessage implements IMessage
@Override
public void sayHello(String name)
System.out.println("钉钉方式: " + name + " say hello!");
③创建一个获取消息的工厂实例
package com.yundi.atp.dp.factory.simple;
import java.util.HashMap;
import java.util.Map;
/**
* @Author: 北溟溟
* @Description: 工厂类
* @Date: 2022/3/13 10:00
* @Version: 1.0.0
*/
public class SayHelloFactory
private final static Map<String, Object> map = new HashMap<>();
/**
* 将接口定义的实现方式存储到map中,方便获取
*/
static
map.put("wechat", new WeChatMessage());
map.put("qq", new QqMessage());
map.put("dingding", new DingdingMessage());
/**
* 通过类型获取工厂类实例
* 注意:如果获取不到对应实例,要做空异常判断
* @param type
* @return
*/
public static IMessage createSendMessage(String type)
return (IMessage) map.getOrDefault(type, null);
//通过不同类型参数获取不同子类实例
public static void main(String[] args)
IMessage wechat = SayHelloFactory.createSendMessage("wechat");
wechat.sayHello("tom");
IMessage qq = SayHelloFactory.createSendMessage("qq");
qq.sayHello("jim");
IMessage dingding = SayHelloFactory.createSendMessage("dingding");
dingding.sayHello("jackson");
简单工厂类的优缺点及适用场景
优点
- 简化了创建子类的过程,只关注使用,不用关注子类具体的业务逻辑
- 便于扩展,简化了子类使用方式
缺点
- 工厂类出现故障,导致所有子类实例业务逻辑不可使用
- 创建或者删除子类,工厂类就要修改,有可能造成工厂逻辑过于复杂,不利于系统的扩展和维护。不符合开闭原则。
适用场景
- 创建子类对象比较固定,比较少,不会轻易变动。
- 对于子类创建的过程不关心,只关注创建哪个子类实例对象的类型
结语
关于简单工厂模式的案例实现到这里就结束了,我们下期见。。。
以上是关于JAVA设计模式——简单工厂模式案例实现的主要内容,如果未能解决你的问题,请参考以下文章