![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java-设计模式
文章平均质量分 91
QC班长
CSDN程序员学院讲师,CSDN内容合伙人,全栈领域优质创作者,高级瑜伽导师-阿斯汤加瑜伽练习者,透过IT看世界!
展开
-
浅谈JavaWeb应用系统的架构设计与演变
今天和朋友聊软件开发技术的架构,聊到了目前JavaWeb应用所用的一些技术,比如高可用、高并发、高性能以及一些软件NGINX、MyCat、Keepalived等等,这些软件在我目前所做的项目中都还没有用到,然后又聊到这软软件的技术的和使用场景等等问题。 又聊到了Web开发的演变历史。从最开始的客户端请求—>服务器响应,到现在的分层设计,几乎可以清晰的看到软件技术演变的逻辑。一开始的客户端请求—>服务器响应模式是最基本的,也是最简单的,相当于最初的模型,用户在浏览器端请求什么,服务器端就返回什么原创 2022-01-23 00:39:22 · 1176 阅读 · 0 评论 -
聊聊E-R图-转自大学老师的分享,或许对你有些帮助
这久在评审学生毕业论文,长久以来也一直在做这方面的工作,我们计科系的毕业论文是配套毕业设计的,而毕业设计基本都需要数据库,于是就有用ER图描述数据库设计的要求。但最近几年来,几乎所有学生的ER图都有这样的问题,就是把操作员,如管理员,用户等作为实体,无可厚非,数据库里的确有管理员和用户相关的表,但这个实体好厉害,因为其和其他所有实体都有关系,关系是什么呢?管理。这就错的厉害了,下面探讨下ER图,看...原创 2019-06-12 12:35:36 · 6740 阅读 · 17 评论 -
作为一名进取型选手应该看看《提问的智慧》来提高自己的思考质量
中文版地址:https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/master/README-zh_CN.md 原文网址:http://www.catb.org/~esr/faqs/smart-questions.html 在提问之前 请注意该章节是“在提问之前”: 尝试在你准备提问的论坛的旧文章中搜索答...原创 2018-12-09 13:41:29 · 900 阅读 · 0 评论 -
高并发、高可用、性能优化、大数据、java大纲
下面的图片上传之后就不清晰了,需要清晰版的朋友请点下面的连接下载: http://download.csdn.net/detail/qq_35624642/9836907原创 2017-05-08 22:58:49 · 1271 阅读 · 0 评论 -
面向对象之继承和组合浅谈
最近一个师弟问某实现是该用对象持有(其实就是组合)还是集成关系实现好。所以就在这里简单的浅谈一下,仅是个人观点,仅供参考。如果写的不对的地方请指出。 首先它们都是实现系统功能重用,代码复用的最常用的有效的设计技巧,都是在设计模式中的基础结构。相信大家已了解的,类继承允许我们根据自己的实现来覆盖重写父类的实现细节,父类的实现对于子类是可见的,所以我们一般称之为白盒复用。对象持有(其实转载 2017-02-13 11:43:45 · 325 阅读 · 0 评论 -
理解Spring 容器设计理念
概述 Spring是为了解决企业应用程序开发复杂性而创建的开源框架,书店上关于Spring的书籍汗牛充栋,网上相关的文章连篇累牍,其中有很多写的很不错的,有入门例子的,有问题解决方案的,有环境设置的,有源代码分析的,有spring与其他开源系统集成的,不一而足。本文通过生活白话,不拘泥于Spring源代码和专业术语的束缚,不拘泥于具体的实现细节,类比介绍Spring容器的宏观的设计理念。原创 2016-09-07 16:01:29 · 4064 阅读 · 0 评论 -
理解IoC及控制反转
控制反转(Inversion of Control,英文缩写为IoC)是一个重要的面向对象编程的法则来削减计算机程序的耦合问题,也是轻量级的Spring框架的核心。 控制反转一般分为两种类型,依赖注入(Dependency Injection,简称DI)和依赖查找(Dependency Lookup)。依赖注入应用比较广泛。 早在2004年,Martin Fowler就提出了原创 2016-09-07 15:54:36 · 435 阅读 · 0 评论 -
java 反射解析,将反射用于工厂模式【实例】
interface fruit{ public abstract void eat(); } class Apple implements fruit{ public void eat(){ System.out.println("Apple"); } } class Orange impl原创 2016-09-07 15:35:54 · 931 阅读 · 0 评论 -
设计模式六大原则(6):开闭原则
定义:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。 问题由来:在软件的生命周期内,因为变化、升级和维护等原因需要对软件原有代码进行修改时,可能会给旧代码中引入错误,也可能会使我们不得不对整个功能进行重构,并且需要原有代码经过重新测试。 解决方案:当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化。 开闭原则是面向对象设计中转载 2016-09-07 14:56:13 · 533 阅读 · 0 评论 -
设计模式六大原则(5):迪米特法则
定义:一个对象应该对其他对象保持最少的了解。 问题由来:类与类之间的关系越密切,耦合度越大,当一个类发生改变时,对另一个类的影响也越大。 解决方案:尽量降低类与类之间的耦合。 自从我们接触编程开始,就知道了软件编程的总的原则:低耦合,高内聚。无论是面向过程编程还是面向对象编程,只有使各个模块之间的耦合尽量的低,才能提高代码的复用率。低耦合的优点不言而喻,但是怎么样编程才能做转载 2016-09-07 14:34:50 · 307 阅读 · 0 评论 -
设计模式六大原则(4):接口隔离原则
定义:客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。 问题由来:类A通过接口I依赖类B,类C通过接口I依赖类D,如果接口I对于类A和类B来说不是最小接口,则类B和类D必须去实现他们不需要的方法。 解决方案:将臃肿的接口I拆分为独立的几个接口,类A和类C分别与他们需要的接口建立依赖关系。也就是采用接口隔离原则。 举例来说明接口隔离原则: (图1 未遵转载 2016-09-07 14:32:43 · 310 阅读 · 0 评论 -
设计模式六大原则(3):依赖倒置原则
定义:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。 问题由来:类A直接依赖类B,假如要将类A改为依赖类C,则必须通过修改类A的代码来达成。这种场景下,类A一般是高层模块,负责复杂的业务逻辑;类B和类C是低层模块,负责基本的原子操作;假如修改类A,会给程序带来不必要的风险。 解决方案:将类A修改为依赖接口I,类B和类C各自实现接口I,类A通过接口I间接转载 2016-09-07 14:23:05 · 293 阅读 · 0 评论 -
设计模式六大原则(2):里氏替换原则
肯定有不少人跟我刚看到这项原则的时候一样,对这个原则的名字充满疑惑。其实原因就是这项原则最早是在1988年,由麻省理工学院的一位姓里的女士(Barbara Liskov)提出来的。 定义1:如果对每一个类型为 T1的对象 o1,都有类型为 T2 的对象o2,使得以 T1定义的所有程序 P 在所有的对象 o1 都代换成 o2 时,程序 P 的行为没有发生变化,那么类型 T2 是类型 T1 的子类型转载 2016-09-07 13:58:39 · 272 阅读 · 0 评论 -
设计模式六大原则(1):单一职责原则
定义:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。 问题由来:类T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障。 解决方案:遵循单一职责原则。分别建立两个类T1、T2,使T1完成职责P1功能,T2完成职责P2功能。这样,当修改类T1时,不会使职责P2发生故障风险;同理,当修改T2时,也转载 2016-09-07 13:49:29 · 293 阅读 · 0 评论 -
掌握设计模式
IT职场的小菜经常有这样的疑问: 为什么一个相似的功能,大牛一会儿就搞定,然后悠闲地品着下午茶逛淘宝;而自己加班加点搞到天亮还做不完。 为什么用户提出需求变更后,大牛只需潇洒地敲敲键盘,改改配置;而自己将代码改了又改,删了又建,几乎晕厥,最后只能推翻重来。 为什么大牛写完的程序测试上线后,几乎完美运行,用户无懈可击;而自己的程序bu转载 2016-09-07 13:32:06 · 277 阅读 · 0 评论