Java 设计模式

设计模式是对应于不同的应用目的的。
 
适配:将特定功能接口适配需求方
 
桥接:面向两个接口,无关接口的实现; 抽象化与实现化解耦,使得二者可以独立变化;例:笔与图形,笔可以画图形,笔可以有铅笔,圆珠笔等,图形可以有圆形,方形等;Eclipse 平台上的桥接模式
 
工厂:定义一个用于创建对象的接口,让子类决定实例化哪个类,是一个类的实例化延迟到其子类。
 
抽象工厂:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类。为了让相互依赖的接口共同协作;类比桥接;汽车厂包含生产轿车品类,生产卡车品类,生产跑车品类不同生产线;开发不同平台的软件等
 
外观:为一组接口定义个一个更高层的统一接口,隐藏系统复杂性
 
状态:目的---消除庞大的条件分支语句;原理---将特定状态相关的行为都放入一个对象中,通过定义不同的子类可以自由的增加新的状态和转换;应用---对象的行为取决于状态,在运行时刻根据状态改变行为。
 
装饰:动态的添加功能
 
中介:用一个中介对象封装一系列的对象交互。避免显示的相互引用,耦合松散。
 
备忘录:不破坏封装的前提下在外部保存对象的状态
 
代理:为其它对象提供一个代理,以控制对着个对象的访问
 
原型:由一个对象创建另一个可定制对象,且不需要知道中间的任何细节。
 
建造者: 使用多个简单的对象一步一步构建成一个复杂的对象;各种builder,SessionFactoryBuilder http等
 
命令:将请求封装为对象。 将命令的执行和责任分开
 
职责链:struts action链, filter chain
 
解释器:jvm
 
访问者:商品购物车 
 
策略模式:将易于变化的部分封装为接口,通常Strategy 封装一些运算法则,使之能互换;如实现排序的多种策略方法。
 
组合模式(整体部分):以树的形式组合对象。xml解析。 组合模式使得用户对单个对象和组合对象的使用具有一致性。 客户程序与复杂元素的内部结构解耦
 
观察者: 当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知它的依赖对象。观察者模式属于行为型模式。订阅新闻。
 
享元: 享元模式尝试重用现有的同类对象,如果未找到匹配的对象,则创建新对象。 主要用于减少创建对象的数量,以减少内存占用和提高性能;共享池,数据库连接池;string
 

项目实例:https://github.com/windwant/windwant-demo/tree/master/java-design-pattern

一句话描述 Java 设计模式的更多相关文章

  1. 一句话说说java设计模式

    设计模式 看到标题,大家是不是觉得不可思议,java的23种设计模式那么‘复杂’,那么‘难懂’,用一句话怎么说的明白呢? 首先,各位看官不要误解,近来在回头看设计模式,之前都看过,但时间是把‘杀猪刀’ ...

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

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

  3. java设计模式系列之设计模式概要(1)

    一.什么是设计模式 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. ...

  4. Java设计模式相关面试

    1.接口是什么?为什么要使用接口而不是直接使用具体类? 接口用于定义 API.它定义了类必须得遵循的规则.同时,它提供了一种抽象,因为客户端只使用接口,这样可以有多重实现,如 List 接口,你可以使 ...

  5. 折腾Java设计模式之命令模式

    博客原文地址 折腾Java设计模式之命令模式 命令模式 wiki上的描述 Encapsulate a request as an object, thereby allowing for the pa ...

  6. 花了30天才肝出来,史上最全面Java设计模式总结,看完再也不会忘

    本文所有内容均节选自<设计模式就该这样学> 序言 Design Patterns: Elements of Reusable Object-Oriented Software(以下简称&l ...

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

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

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

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

  9. Java设计模式(十三) 别人再问你设计模式,叫他看这篇文章

    原创文章,转载请务注明出处 OOP三大基本特性 封装 封装,也就是把客观事物封装成抽象的类,并且类可以把自己的属性和方法只让可信的类操作,对不可信的进行信息隐藏. 继承 继承是指这样一种能力,它可以使 ...

随机推荐

  1. 用python实现ping

    #!/usr/bin/env python #coding=utf-8 import os import argparse import socket import struct import sel ...

  2. 解决iOS项目根目录下文件乱七八糟的问题

    对于一个刚做项目的新手来说,肯定会碰到一个相当蛋疼的问题,那就是你在项目中建立的文件夹与你在根目录下的文件夹完全对应不起来,说直接点就是你通过group的方式在项目中建立的文件夹在本目录下根本就没有. ...

  3. 【luogu P1351 联合权值】 题解

    题目链接:https://www.luogu.org/problemnew/show/P1351 做了些提高组的题,不得不说虽然NOIP考察的知识点虽然基本上都学过,但是做起题来还是需要动脑子的. 题 ...

  4. Android大图片裁剪终极解决方案(下:拍照截图)

    http://blog.csdn.net/floodingfire/article/details/8144617 http://mzh3344258.blog.51cto.com/1823534/8 ...

  5. Magazine Ad CodeForces - 803D(二分 + 贪心,第一次写博客)

    Magazine Ad The main city magazine offers its readers an opportunity to publish their ads. The forma ...

  6. .Net core使用Quartz.Net 实现定时任务

    很多情况下,我们需要完成一些定时执行的功能,用很多定时工具,像:hangfire,TimeJob,以及Quartz.net,不过quartz.net 比较精确一些,功能也比较强大,所以我选择了Quar ...

  7. mongodb查看数据库和表的信息

    mongodb查看数据库和表的方法比较简单,在为这里推荐使用stats的方法,直观并且详细. 1.查看数据库 db.stats();1输出: { "db" : "siri ...

  8. vuejs 解决跨域访问问题

    首先: config/index.js下面的proxyTable配置您的服务访问基本地址,将changeOrigin设置为true即可,然后在你需要访问接口的地方,这样使用,以下是我的工程代码(前提是 ...

  9. python3.X 安装web.py 失败的解决方法

    python2.x 安装python是非常顺利的 但是 在进行 pip3 install web.py 时提示很多错误 例如缺少模块 语法错误...... 最后试了一下web.py 的dev版本 pi ...

  10. windows10下“sqlplus / as sysdba”执行提示无权限解决办法

    ORA_DBA:是ORACLE 的特有用户,是超级管理员权限,建成DBA 它具有管理数据库的最高权限. 注明:需要以管理员身份运行cmd,不然第4步会失败(点开始,输入cmd,右键以管理员身份运行) ...