java开发在现在这种微服务架构体系中,业务代码还能使用各种设计模式吗?如工厂?

当然能使用各种设计模式,Spring框架中有很多设计模式的体现,只要能在微服务体系中最终满足BASE理论,不还是照样在使用?

先说说设计模式

设计模式不是一种框架或中间件技术,而是对学习工作中代码进行高层次抽象的总结。设计模式不限于某种编程语言,JavaScript有设计模式,Java也有设计模式,只是表象不同而己。

根据用途可将设计模式分为三类:结构型模式、行为型模式和创建型模式。经典设计模式有23种,每一个设计模式也有多种实现,例如单例模式(懒汉、饿汉、静态内部类和DCL等),还是题主说到的工厂模式(简单工厂模式、工厂方法模式等)等。java开发在现在这种微服务架构体系中,业务代码还能使用各种设计模式吗?如工厂?

分布式与微服务架构

随着开发的项目越来越繁杂,开发效率和高并发情况下要求高可用,项目模块化与容错机制就显得很有必要,分布式孕育而生。将每个开发模块部署到独立的云服务主机上,就好像多个人在一起做不同分工的事,但是整个过程是相互协作完成,这和集群的理念相反。而微服务算是一种架构,也属于分布式范畴,例如SpringCloud就是微服务架构的一种体现。java开发在现在这种微服务架构体系中,业务代码还能使用各种设计模式吗?如工厂?

Spring中常用的设计模式

学习Java语言,Spring是必经之路,SringMVC和SringBoot等都是Sring框架的衍生品。现在使用SringBoot结合SpringCloud实现微服务与分布式不是什么新鲜技术,在初创或者开发成本预算不多的公司已经是首先技术架构,上手容易,生态支持友好。

Spring框架中有很多设计模式体现。例如简单工厂模式之BeanFactory,根据传入一个唯一的标识来获得Bean对象。再比如Spring下默认的Bean注解均为单例模式,将提供一个访问它的全局访问点,你可以通过设置singleton=“true|false”或者 scope="?"来指定作用范围,例如RabbitMq需要ACK回调机制确保消息发送到交换机的话,rabbitmqTemplate就不能为单例模式,需要设置scope=SCOPE_PROTOTYPE,并通过构造方法注入而非Autowrite注解。还有在Aop中,使用Advice来增强被代理类的功能而使用到的代理模式等等。这些都没有因为微服务体系的出现而被舍弃掉。

从以上三个方面阐述就会发现,微服务出现并不会导致现有一些技术或理论直接被弃用,而是通过新的理论或思想将这些精髓沿用,尽可能去靠近CAP原则。java开发在现在这种微服务架构体系中,业务代码还能使用各种设计模式吗?如工厂?

java开发在现在这种微服务架构体系中,业务代码还能使用各种设计模式吗?如工厂?

目前公司java哪些技术比较流行?

一个非常好的问题。Java是主流开发语言,应用普遍,不同的业务场景会用到很多不同框架。以Web服务开发为例,基本框架可分为数据层、HTTP开发、异步任务、鉴权认证、日志监控等几大类别。

学习过程中多总结,虽然框架很多,但是可以专题分类,针对常用的几个框架重点学习,积累起来非常快。

注意学习框架时要挑选当前广泛使用的Top3,已经过时或者太新还看不清楚未来的框架,可以在需要时再去学习研究。

以Web服务开发为例,常用框架分类总结如下:

1. Spring框架,Spring Boot和Spring Cloud是最常用框架,有非常丰富的组件和易用的功能。

2. 数据层,MySQL数据库,MyBatis持久层,Flyway版本化管理数据库SQL脚本,Ali Druid连接池等框架。

MyBatis Plus是国内的一个开源项目,对MyBatis做了进一步增强、简化开发和提高效率,并且提供了简单易用的代码生成器。

Hibernate是另一个经常使用的持久化框架。

3. 缓存系统,最常使用Redis,MongoDB等其他NoSQL也经常使用。

4. 异步消息队列,常用ActiveMQ,RocketMQ,RabbitMQ,建议选择一个学习。

5. JSON数据处理,常用Fastjson,Gson,Jackson,Json-lib,推荐Fastjson。

6. 开发工具包,Apache Commons套件,lang, collections, codec, io等功能库。

7. 网框开发工具包,推荐Apache HttpClient,其他比如OKHttp,Java原生库HttpURLConnection使用也很普遍。

另外常用的WebClient,Spring框架提供的RestTemplate。

8. 鉴权认证,控制访问权限,REST接口安全,常用Apache Shiro, Jwt。

9. 异步任务调度,复杂耗时任务,使用Quartz框架异步执行,Spring框架自带的Schedule可以满足小型项目使用。

10. 单元测试JUnit + Mockit

11. 日志系统,集成LogBack,接入LogStash配合ELK分析处理。

12. 服务监控,使用Actuator等框架实现运行信息收集和报警,配合图像化展示工具,比如Prometheus + Grafana + AlertManager

13. Swagger接口文档

14. Postman接口调试工具

java开发在现在这种微服务架构体系中,业务代码还能使用各种设计模式吗?如工厂?


我是工作多年的Web应用架构师,陆续发布关于软件开发方面的文章,欢迎关注我,了解更多IT专业知识。

简述JAVA的几种设计模式?

JAVA中使用设计模式写代码能使代码重用、直观、可靠,共有23种设计模式,分别是:

创建型模式:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式;

结构型模式:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式;

行为型模式:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式

如果需要详细了解可以点击如下链接:

https://www.jianshu.com/p/ef8c7a88c039

"

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 xxx@163.com 举报,一经查实,本站将立刻删除。

发表评论

登录后才能评论