![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 79
万小猿
这个作者很懒,什么都没留下…
展开
-
引入log4j日志包为何会自动导入额外两个包(门面模式)
一、问题由来引入如下log4j的包,会出现这三个依赖第一个是log4j的底层包,但第二个第三个slf4j是什么呢?为何导入log4j会额外导入了两个包呢?二、导入额外包的原因项目中不同的jar包里面很有可能即用到了log4j,又用到了logback日志。这样的话项目就要支持与维护多个日志框架了,很麻烦。 所以怎么同时支持多个日志框架呢?那就是门面模式三、门面模式必须都通过一个入口访问。不同的模块有自己的功能举一个例子,比如装修房子,我们自己去找和泥工,搬砖工,..原创 2021-11-12 23:39:22 · 893 阅读 · 0 评论 -
写单例模式以及防止反射破坏
一、为何要单例?优点:1.单例模式保证java应用程序中,一个类Class只有一个实例在,使用单例模式好处在于可以节省内存,节约资源,对于一般频繁创建和销毁对象的可以使用单例模式。因为它限制了实例的个数,有利于java垃圾回收。好的单例模式也能提高性能。例如:数据库连接池、httpclient连接单例缺点:1.单例的缺点不适用于变化的对象,如果同一类型的对象总是要在不同的用例场景发生变化,单例就会引起数据的错误,不能保存彼此的状态。2.单例模式的构造函数是静态的,不能被子类继承。.原创 2021-09-01 20:21:45 · 988 阅读 · 0 评论 -
通俗易懂讲解Monad的设计模式
一、函数编程Monad函数式编程有一个重要概念,叫做Monad。网上有很多解释(这里和这里),但都很抽象,不容易看懂。我尝试了好多次,还是不明白Monad到底是什么。昨天,我读到了Aditya Bhargava的文章,他画了很多图。我想了半天,终于恍然大悟。下面,我就用这些图来解释Monad。1.软件最基本的数据,就是各种值(value)。2.处理值的一系列操作,可以封装成函数。输入一个值,会得到另一个值。上图的"(+3)"就是一个函数,对输入的值加上3,再输出。转载 2021-06-29 18:55:27 · 1951 阅读 · 0 评论