大家都知道Java23种设计模式,大神总结如下:

创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。

结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。

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

各种设计模式的原理和要点大神zhangerqing的原创博文系列已有讲解,贴一下,遗忘了就去复习

http://blog.csdn.net/zhangerqing/article/details/8194653 【Java之美[从菜鸟到高手演变]之设计模式】创建型模式

http://blog.csdn.net/zhangerqing/article/details/8239539 【Java之美[从菜鸟到高手演变]之设计模式二】结构型模式

http://blog.csdn.net/zhangerqing/article/details/8243942【Java之美[从菜鸟到高手演变]之设计模式三】行为型模式

http://blog.csdn.net/zhangerqing/article/details/8245537【Java之美[从菜鸟到高手演变]之设计模式四】行为型模式二

设计模式的六大原则:

1、开闭原则(Open Close Principle)。开闭原则就是说对扩展开放,对修改关闭。

2、里氏代换原则(Liskov Substitution Principle)。里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现。

3、依赖倒转原则(Dependence Inversion Principle)。这个是开闭原则的基础,具体内容:针对接口编程,依赖于抽象而不依赖于具体。

4、接口隔离原则(Interface Segregation Principle)。这个原则的意思是:使用多个隔离的接口,比使用单个接口要好。

5、迪米特法则(最少知道原则)(Demeter Principle)。一个实体应当尽量少的与其他实体之间发生相互作用,使得系统功能模块相对独立。

6、合成复用原则(Composite Reuse Principle)。原则是尽量使用合成/聚合的方式,而不是使用继承。

人们总结以上设计模式的原则主要从工作经验中来,考虑如下两点:

一、扩展性。扩展性可谓当前企业级项目必备,个人项目做实验或兴趣扩展性可能在易编程性之后,想要尽快做出东西,看看效果玩一玩。企业级项目可不同,一定是针对直接客户的需求为目标,而且这个需求会随着调研深浅和市场竞争有很大差异,目前中国市场竞争之激烈,一个小项目第一个月调研出来的结果可能是两个核心需求,第二个月就会多出有上十个配套需求了,在系统上线半年之后还可能有好几个补充需求。那么这个项目无论从架构上还是功能模块上,都需要具备很好的扩展性。

二、稳定性。一个项目上线对外提供服务,出现故障一般有几种情况:编程质量不高导致内存泄漏或运行缓慢,网络带宽/数据库/服务器硬件性能导致系统崩溃,还有就是更新版本导致性能或功能问题。在高速发展的业务场景下,版本更新产生的问题比前两种药常见得多,而且更为严重。本身没有什么大漏洞的系统,由于更新版本出现功能性漏洞的情况屡见不鲜。如何避免这类问题,其实就是新功能不要影响旧功能,那怎么样新功能才不会影响旧功能呢?利用Java的继承的接口实现特性,尽量不要去改现有的类,即使要改现有的类,也不要去改现有的函数。使用新的类和新的函数去实现新功能。

Java设计模式随笔的更多相关文章

  1. JAVA设计模式——代理(动态代理)

    传送门:JAVA设计模式——代理(静态代理) 序言: 在学习Spring的时候,我们知道Spring主要有两大思想,一个是IoC,另一个就是AOP,对于IoC,依赖注入就不用多说了,而对于Spring ...

  2. java设计模式- (1)单例模式

    参加校园招聘的笔试,发现公司都会考一些java设计模式,所以上网查询相关内容,总结常用的几种单例模式. 单例模式(Singleton Pattern)是 Java中最简单的设计模式之一.这种类型的设计 ...

  3. JAVA 设计模式 桥接模式

    用途 桥接模式 (Bridge) 将抽象部分与实现部分分离,使它们都可以独立的变化. 桥接模式是一种结构式模式. 结构

  4. java设计模式 策略模式Strategy

    本章讲述java设计模式中,策略模式相关的知识点. 1.策略模式定义 策略模式,又叫算法簇模式,就是定义了不同的算法族,并且之间可以互相替换,此模式让算法的变化独立于使用算法的客户.策略模式属于对象的 ...

  5. Java设计模式之行为型模式

    行为型模式共11种:策略模式.模板方法模式.观察者模式.迭代子模式.责任链模式.命令模式.备忘录模式.状态模式.访问者模式.中介者模式.解释器模式. 策略模式:策略模式的决定权在用户,系统本身提供不同 ...

  6. Java设计模式(三) 抽象工厂模式

    原创文章,同步发自作者个人博客,转载请注明出处 http://www.jasongj.com/design_pattern/abstract_factory/ 抽象工厂模式解决的问题 上文<工厂 ...

  7. Java设计模式(十二) 策略模式

    原创文章,同步发自作者个人博客,http://www.jasongj.com/design_pattern/strategy/ 策略模式介绍 策略模式定义 策略模式(Strategy Pattern) ...

  8. Java设计模式(二) 工厂方法模式

    本文介绍了工厂方法模式的概念,优缺点,实现方式,UML类图,并介绍了工厂方法(未)遵循的OOP原则 原创文章.同步自作者个人博客 http://www.jasongj.com/design_patte ...

  9. Java设计模式(一) 简单工厂模式不简单

    摘要:本文介绍了简单工厂模式的概念,优缺点,实现方式,以及结合Annotation和反射的改良方案(让简单工厂模式不简单).同时介绍了简单工厂模式(未)遵循的OOP原则.最后给出了简单工厂模式在JDB ...

随机推荐

  1. SpringMVC REST 风格请求介绍及简单实践

    简介 REST 即 Representational State Transfer.(资源)表现层状态转化.是目前最流行的一种互联网软件架构.它结构清晰.符合标准.易于理解.扩展方便,所以正得到越来越 ...

  2. sass学习笔记 -- sass的四种编译方法

    sass的四种编译方法:(.scss) (一)ruby下的命令行编译 首先需要安装ruby,注意需勾选Add Ruby executables to your PATH选项,以添加环境变量. ruby ...

  3. 基于Intranet的零件库管理信息系统设计--part02

    昨天建了第一个子表,今天继续. 按照这个一个一个来: 轴承参数查询如下(来源:轴承查询型号网) 照这个来大概就是这么几个属性: 轴承主键,轴承名称,新型号,旧型号,内径,外径,宽度,Cr,Cor(话说 ...

  4. Spring Boot 整合 Mybatis 实现 Druid 多数据源详解

    摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! “清醒时做事,糊涂时跑步,大怒时睡觉,独处时思考” 本文提纲一.多数据源的应用场景二.运行 sp ...

  5. Shell中一键添加作者,版权信息

    第一步:编辑/etc/vimrc文件 [root@proxy ~]# cp /etc/vimrc /etc/vimrc.ori [root@proxy ~]# vim /etc/vimrc 第二步:直 ...

  6. win32最简单的htmlayout图形界面demo

    1,下载HTMLayoutSDK,放在workspace. SDK下载地址:http://www.terrainformatica.com/htmlayout/HTMLayoutSDK.zip 2,v ...

  7. 读书笔记 effective c++ Item 39 明智而谨慎的使用private继承

    1. private 继承介绍 Item 32表明C++把public继承当作”is-a”关系来对待.考虑一个继承体系,一个类Student public 继承自类Person,如果一个函数的成功调用 ...

  8. React文档翻译系列(二)Hello World

    这是React文档翻译系列的第二篇,前一篇介绍了如何安装react,本篇主要介绍react的知识体系,掌握了基本的知识体系,才能更好的学习React. Hello World 开始React最简单的方 ...

  9. Sublime Text前端开发环境配置

    Sublime Text是前端开发不可不说的编辑器,本文以Sublime Text 3为例讲解一下如何搭建前端的开发环境. 下载Sublime Text 3 下载地址 #==> Sublime ...

  10. JS——操作内容、操作相关元素

    操作内容:普通元素.innerHTML = "值": 会把标记执行渲染普通元素.innerText = "值": 将值原封不动的展示出来,即使里面有标记 var ...