设计模式

看到标题,大家是不是觉得不可思议,java的23种设计模式那么‘复杂’,那么‘难懂’,用一句话怎么说的明白呢? 首先,各位看官不要误解,近来在回头看设计模式,之前都看过,但时间是把‘杀猪刀’,更是瓶‘健忘药’,特别是对于‘程序猿’来说,有些东西一周不看,就会‘如隔三秋’,本篇旨在用一句话描述一种设计模式,目的仅仅是帮助我们记住每种设计模式是用来做什么的,仅此而已! 这次的回故让我对设计模式又深入明白了几分,但这里面的水真的太深,理论是一方面,实践才能出真知。 只有理论联系实践,才能理解的更通透。 想把设计模式更深入理解,有一个办法,就是去看spring源码,那里面的代码基本都与设计模式有关(个人比较喜欢spring,优秀框架其实都差不多)!

设计模式分类

总体来说设计模式分为三大类:

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

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

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

  • 其实还有两类:并发型模式和线程池模式。

设计模式原则

  • 开闭原则(Open Close Principle)
  • 里氏代换原则(Liskov Substitution Principle)
  • 依赖倒转原则(Dependence Inversion Principle)
  • 接口隔离原则(Interface Segregation Principle)
  • 迪米特法则(最少知道原则)(Demeter Principle)
  • 合成复用原则(Composite Reuse Principle)

以上摘自:http://www.cnblogs.com/maowang1991/archive/2013/04/15/3023236.html中关于设计模式的分类,这篇博文写的很棒,想要再深入学习的同学赶紧去看看!

一句话工厂模式

  1. 工厂方法模式(Factory Method)

    使用‘工厂’统一创建实例,一般使用‘静态工厂方法模式’
  2. 抽象工厂模式(Abstract Factory)

    其实也属于‘工厂方法模式’,只是针对不同类使用不同的创造工厂,扩展性更好
  3. 单例模式(Singleton)

    一个类只能产生一个实例,单例的水很深,可以好好探究下
  4. 建造者模式(Builder)

    简单说,就是‘工厂’的‘生产线’,批量生产实例
  5. 原型模式(Prototype)

    在原型类的基础上,对类进行深(浅)复制
  6. 适配器模式(Adapter)

    将原型A 通过适配器B 转换为消费者C 需要的类型,比如:苹果的充电器(A)使用适配器(B)使用中国的线插(C)一样
  7. 装饰模式(Decorator)

    通过装饰器A 为目标对象B 增加一些新的功能,关注点在‘新功能’
  8. 代理模式(Proxy)

    通过调用代理A 实现调用目标对象B 的目的
  9. 外观模式(Facade)

    通过组件A 将元件B/C/D 组装起来,实现特定功能,如:机箱将CPU,主板,硬盘等元件组装起来,从而使电脑能够正常运行
  10. 桥接模式(Bridge)

    抽象出公共通道A和公共标准B,所有标准B 的实现,都能以相同的方式通过通道A
  11. 组合模式(Composite)

    学习中...
  12. 享元模式(Flyweight)

    实现对象共享,共享池技术一般都采用享元模式实现
  13. 策略模式(strategy)

    针对不同策略提供具体实现,根据策略选择相应实现;如:计算器的+-*/,用户选择+,系统会调用对应+的具体实现,扩展到其它场景也一样
  14. 模板方法模式(Template Method)

    基类中定义主方法和抽象方法,并且主方法调用抽象方法,子类中具体实现抽象方法并加入相应策略,使所有实现的子类在调用时感觉在使用模板一样(语言很难表达清楚,还是看代码理解的快)
  15. 观察者模式(Observer)

    为目标对象添加一个或多个观察者,并且目标对象在操作时通知所有观察者--我修改了
  16. 迭代子模式(Iterator)

    模拟集合对目标对象进行操作
  17. 责任链模式(Chain of Responsibility)

    调用者A,调用对象B,对象B 中有对象C 的引用,于是对象C 被调用,对象C 中有对象D 的引用,于是对象D 被调用...
  18. 命令模式(Command)

    命令发出者A 发出指令给传递者B,传递者B 将指令给执行者C,A 并不关心C 如何完成任务
  19. 备忘录模式(Memento)

    目标对象A 的状态S 保存在备忘对象B 中,辅助类 C保存备忘对象 B,当A 状态改变后,通过备忘对象找回原状态
  20. 状态模式(State)

    通过不同状态控制不同行为
  21. 访问者模式(Visitor)

    通过新增目标对象来实现新的操作,不影响原有操作与行为
  22. 中介者模式(Mediator)

    添加中介对象实现目标对象的操作,达到解藕目的
  23. 解释器模式(Interpreter)

    通过解释器A 将目标对象 B进行解释,如:计算解释、正则解释等

不写不知道,一句话来说设计模式真心太难了,根本说不清楚! 很多可能解释的并不清晰,我自己也很难理解,后续再整理与修改! 还是那句,记住一句话,就记住一种设计模式,这是目标,任重道远!

加油!!!

一句话说说java设计模式的更多相关文章

  1. 一句话描述 Java 设计模式

    Java 设计模式 设计模式是对应于不同的应用目的的.   适配:将特定功能接口适配需求方   桥接:面向两个接口,无关接口的实现: 抽象化与实现化解耦,使得二者可以独立变化:例:笔与图形,笔可以画图 ...

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

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

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

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

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

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

  5. Java设计模式汇总

    Java设计模式汇总 设计模式分为三大类: 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. 结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接模式. ...

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

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

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

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

  8. Java设计模式学习记录-命令模式

    前言 这次要介绍的是命令模式,这也是一种行为型模式.最近反正没有面试机会我就写博客呗,该投的简历都投了.然后就继续看书,其实看书也会给自己带来成就感,原来以前不明白的东西,书上已经给彻底的介绍清楚了, ...

  9. Java 设计模式系列(二十)状态模式

    Java 设计模式系列(二十)状态模式 状态模式,又称状态对象模式(Pattern of Objects for States),状态模式是对象的行为模式.状态模式允许一个对象在其内部状态改变的时候改 ...

随机推荐

  1. VS 2017 Region快捷键无法折叠

  2. 使用poi读写Excel------demo

    package com.js.ai.modules.pointwall.interfac; import java.io.FileInputStream; import java.io.FileOut ...

  3. Oracle参数修改是否需要重启等

    Oracle参数修改小结Oracle中有些参数是可以在session级别修改,有些则必须在system级别修改,有些参数不需要重启就能马上生效,有些参数必须重启才能生效,那么如何知道这些信息呢?可以从 ...

  4. 搭建Lepus数据库监控系统-记录

    一.  安装环境 系统环境:centos6.5 IP:192.168.30.242 hostname:vpn.org 软件:LAMP均已安装.(请确保这些正常安装,并能使用). 系统核心包:(摘自官方 ...

  5. OpenStack--Cinder(G版)中的volume type

    一.volume type的相关操作 Cinder中的卷类型,是卷的一种标识,各个OpenStack的发行者可根据自身对系统的约束来定义卷类型的使用.G版的Cinder中与卷类型相关的两种资源:typ ...

  6. Tkinter Text(文本)

         Tkinter Text(文本): 文本小部件提供先进的功能,让您编辑多行文本格式,如改变其颜色和字体的方式显示.   文本小部件提供先进的功能,让您编辑多行文本格式,如改变其颜色和字体的方 ...

  7. Python图片转字符

    前段时间学习pillow写的,可以通过改变font_map改变转换的深度和字符.思路是先转换黑白大小,读取黑白值取范围读font_map转变. from PIL import Image,ImageD ...

  8. Django 的分页器

    from  不能发json格式   只能发四种格式 view from django.shortcuts import render,HttpResponse # Create your views ...

  9. 第一章IP:网际协议

    I P是T C P / I P协议族中最为核心的协议.所有的 T C P.U D P.I C M P及I G M P数据都以I P数据报格式传输(见图 1 - 4).许多刚开始接触 T C P / I ...

  10. kali中的中国菜刀weevely

    weevely是一个kali中集成的webshell工具,是webshell的生成和连接集于一身的轻量级工具,生成的后门隐蔽性比较好,是随机生成的参数并且加密的,唯一的遗憾是只支持php,weevel ...