java简单工厂模式入门
前言
定义一个工厂类,他可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类
在简单工厂模式中用于被创建实例的方法通常为静态(static)方法,因此简单工厂模式又被成为静态工厂方法(Static Factory Method) 只需要传入一个正确的参数,就可以获取所需要的对象,而无需知道其实现过程
试例
以饮料加工厂为例
1. 创建饮料接口(或者抽象类)
public interface Drink { void production(); }
2. 具体饮料类的实现(可乐、雪碧)
public class ColaDrinkProduction implements Drink{ @Override public void production() { System.out.println("生产可乐饮料"); } }
public class SpriteDrinkProduction implements Drink{ @Override public void production() { System.out.println("生产雪碧饮料"); } }
3. 饮料生产工厂类
public class DrinkProductionFactory { public static Drink productionDrink(String type){ switch (type){ case "cloa": return new ColaDrinkProduction(); default: return new SpriteDrinkProduction(); } } }
4. 工厂调用
需要什么对象传入对应的参数即可
Drink cloa = DrinkProductionFactory.productionDrink("cloa"); cloa.production();
特点
它是一个具体的类,非接口 抽象类。有一个重要的调用方法(productionDrink),通常是静态的,利用if或者 switch创建产品并返回
缺点
扩展性差 我想增加一种饮料,除了新增一个饮料产品类,还需要修改工厂类方法(增加‘Case'的分支条件) 这样来说 不但对扩展开放了,对修改也开放了 违背了开放-封闭原则
总结
本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注脚本之家的更多内容!
相关文章
基于SpringBoot + Redis实现密码暴力破解防护
在现代应用程序中,保护用户密码的安全性是至关重要的,密码暴力破解是指通过尝试多个密码组合来非法获取用户账户的密码,为了保护用户密码不被暴力破解,我们可以使用Spring Boot和Redis来实现一些防护措施,本文将介绍如何利用这些技术来防止密码暴力破解攻击2023-06-06SpringBoot如何配置获取request中body的json格式参数
这篇文章主要介绍了SpringBoot如何配置获取request中body的json格式参数,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-06-06SpringBoot中的@RequestMapping注解的用法示例
@RequestMapping注解是SpringBoot中最常用的注解之一,它可以帮助开发者定义和处理HTTP请求,本篇文章我们将详细为大家介绍如何使用SpringBoot中的@RequestMapping注解,感兴趣的同学跟着小编一起来学习吧2023-06-06
最新评论