一句话说说java设计模式

设计模式

看到标题,大家是不是觉得不可思议,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进行解释,如:计算解释、正则解释等
    

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

加油!!!

时间: 2024-10-12 07:38:49

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

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

一.什么是设计模式 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样.项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是

菜鸟版JAVA设计模式—从火锅底料到装饰器模式

今天开始学历了JAVA设计模式中的装饰模式,照例还是写下自己理解的心得吧. 装饰器模式,啥是装饰器模式?带着这个问题,咱们好好的去火锅店吃个火锅. "老板,来份全辣锅底,不要给我用装饰器模式来配料!"我特地狠狠的强调了最后一句话. 不到一会,老板给我端来了一个火锅和几个盘子,火锅里装了盐水,而盘子里放了辣椒,花椒,茴香,大蒜等佐料.......... 这时候大家可能就需要问了,这咋吃啊...难道让我自己配料么? 这便是是我们的矛盾了!客户需要的一盘已经配好料的火锅汤底,但是我们初期给用

Java设计模式(十) 备忘录模式 状态模式

(十九)备忘录模式 备忘录模式目的是保存一个对象的某个状态,在适当的时候恢复这个对象. class Memento{ private String value; public Memento(String value){ this.value = value; } public String getValue() { return value; } public void setValue(String value) { this.value = value; } } class Storage

Java设计模式(二)-单例模式

单例模式建议保证某个对象仅仅只有一个实例,当只有一个对象来协调整个系统的操作时,在计算机系统中,线程池.缓存.日志对象.对话框.打印机.显卡的驱动程序对象常被设计成单例,总之,选择单例模式就是为了避免不一致状态,避免政出多头. 下面是单例模式的类图:包括的private和static修饰的实例instance.一个private的构造函数.一个static的getInstance函数 单例模式主要有三种:懒汉式单例.饿汉式单例.登记式单例三种 1.饿汉式单例:在类的初始化时候,自行创建了实例 c

JAVA设计模式之 装饰模式【Decorator Pattern】

一.概述 动态地给一个对象增加一些额外的职责,就增加对象功能来说,装饰模式比生成子类实现更为灵活.装饰模式是一种对象结构型模式.装饰模式是一种用于替代继承的技术,使用对象之间的关联关系取代类之间的继承关系.在装饰模式中引入了装饰类,在装饰类中既可以调用待装饰的原有类的方法,还可以增加新的方法,以扩充原有类的功能. 二.适用场景 装饰原有对象.在不改变原有对象的情况下扩展增强新功能/新特征..当不能采用继承的方式对系统进行扩展或者采用继承不利于系统扩展和维护时可以使用装饰模式. 三.UML类图 四

(九)JAVA设计模式之单例模式

JAVA设计模式之单例模式 一.单例模式的介绍 Singleton是一种创建型模式,指某个类采用Singleton模式,则在这个类被创建后,只可能产生一个实例供外部访问,并且提供一个全局的访问点.     全局对象和Singleton模式有本质的区别,因为大量使用全局对象会使得程序质量降低,而且有些编程语言根本不支持全局变量.最重要的是传统的全局对象并不能阻止一个类被实例化多次. 二.单例模式的特点 单例类只能有一个实例 单例类必须自己创建自己的唯一实例. 单例类必须给所有其他对象提供这一实例.

JAVA设计模式有感

记得在大学学JAVA那阵,就觉得JAVA是一个c语言的一个包装,各种封装好的类库.功能,学习JAVA能快速上手编码.时隔8年,我感觉自己不懂JAVA. 最近看了有1个月的设计模式了,进度比较缓慢,一共才看了4个"策略模式","观察者模式","装饰者模式","工厂模式".也谈一谈自己的感受.其实这些设计模式以前也看过,当时的水准也就是硬生生记下了每个设计模式是怎么运作的,从没有想过它遵循了什么原则,达到了什么目的.因此,看过一遍

学习Java设计模式的10条建议

设计模式在整个Java的学习路线图中扮演着承上启下的作用. 在整个软件生命周期中,唯一不变的就是变化.设计模式就是要在软件设计.编码中对现有问题的一种总结,并从中寻求应对变化的策略. 自己初次接触设计模式有以下几个感觉: 内容很抽象. 示例都能看得懂,但不知道实际中如何应用. 不理解为什么要把“好好的程序”设计成这么复杂? 转眼之间到了需要自己参与需求分析.设计,并且维护之前留下的遗产代码(Legacy Code)的时候了. 再次开始学习设计模式,有了新的收获: 站在变化的角度去看,设计模式虽然

Java设计模式(五)外观模式 桥梁模式

(九)外观模式 外观模式为子系统提供一个接口,便于使用.解决了类与类之间关系的,外观模式将类之间的关系放在一个 Facade 类中,降低了类类之间的耦合度,该模式不涉及接口. class CPU { public void startup(){ System.out.println("cpu start"); } public void shutdown(){ System.out.println("cpu stop"); } } class Memory { pu