设计模式的起源是面向对象程序设计思想,是面向对象设计的精髓——抽象。面向对象通过类和对象来实现抽象,实现时产生了面向对象的三个重要机制:封装、继承、多态。正是这三个机制衍生出了各种各样的设计模式。在面向对象软件设计的发展过程中,除了《设计模式》一书中提到的23中设计模式之外,新的设计模式仍然不断出现。

Java23种设计模式,根据目的准则可以分为创建型、结构型、行为型。

创建型

  • 1 抽象工厂模式(AbstractFactory)
    定义:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类。
    详细信息
  • 2 创建者模式(Builder)
    简介:其核心思想是将一个“复杂对象的构建算法”与它的“部件及组装方式”分离,使得构件算法和组装方式可以独立应对变化;复用同样的构建算法可以创建不同的表示,不同的构建过程可以复用相同的部件组装方式。
    详细信息
  • 3 工厂方法模式(FactoryMethod)
    简介:工厂方法模式(FACTORY METHOD)是一种常用的类创建型设计模式,此模式的核心精神是封装类中不变的部分,提取其中个性化善变的部分为独立类,通过依赖注入以达到解耦、复用和方便后期维护拓展的目的。它的核心结构有四个角色,分别是抽象工厂;具体工厂;抽象产品;具体产品
  • 4 原型模式(Prototype)
    定义:原型模式是一种创建型设计模式,Prototype模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建
  • 5 单列模式(Singleton)
    定义:单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的一个类只有一个实例。即一个类只有一个对象实例。

    结构型

  • 1 适配器模式(Adapter)
    定义:在计算机编程中,适配器模式(有时候也称包装样式或者包装)将一个类的接口适配成用户所期待的。一个适配允许通常因为接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中
  • 2 桥接模式(Bridge)
    定义:桥接模式是将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(Interfce)模式。
  • 3 组合模式(Composite)
    定义:将对象组合成树形结构以表示“部分整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。
  • 4 装饰模式(Decorator)
    定义:23种设计模式之一,英文叫Decorator Pattern,又叫装饰者模式。装饰模式是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象
  • 5 外观模式(Facade)
  • 6 享元模式(Flyweight)
  • 7 代理模式(Proxy)

    行为型

  • 1 职责链模式
  • 2 命令模式(Command)
  • 3 解释器模式(Interpreter)
  • 4 迭代器模式(Iterator)
  • 5 中介者模式(Mediator)
  • 6 备忘录模式(Memento)
  • 7 观察者模式(Observer)
  • 8 状态模式(State)
  • 9 策略模式(Strategy)
  • 10 模板方法模式(TempalteMethod)
  • 11 访问者模式(Visitor)

最新文章

  1. hibernate学习一(hibernate简介与准备)
  2. js判断鼠标是否停止移动
  3. golang: 常用数据类型底层结构分析
  4. git gitignore文件失效处理
  5. Object-c字符串操作
  6. Install MongoDB driver for PHP on XAMPP for Mac OSX
  7. EntityFramework_MVC4中EF5 新手入门教程之二 ---2.执行基本的 CRUD 功能
  8. 使用log4net连接Mysql数据库配置
  9. Java 字典排序
  10. Android双击Back退出应用
  11. 【练习】如何显示本地主机上的MySQL客户机版本
  12. HTML5学习(十)---Web Workers
  13. jquery ajax cache的问题
  14. Thinkphp 文本编辑器
  15. Chrome: Shockwave Flash isn't responding
  16. hdu 1010 回溯加奇偶性剪枝
  17. python爬虫之基本知识
  18. window 安装redis、memcache的php扩展和 reidis 、memcache 及 reids管理软件
  19. 深入学习c++(虚函数遇到析构函数就退化了)
  20. Java中日期格式(String、Date、Calendar)的相互转换

热门文章

  1. 吴裕雄--天生自然 JAVA开发学习:条件语句
  2. springBoot 使用redis 和 StringRedisTemplate 常用操作
  3. [前端] VUE基础 (6) (v-router插件、获取原生DOM)
  4. iOS 一种很方便的构造TarBar
  5. Point Estimation
  6. python编程练习题目
  7. ORs-2-Genome Coverage and the OR Subgenome
  8. [Codefoeces398B]Painting The Wall(概率DP)
  9. 03 - CDH 6.3.x 安装
  10. python后端面试第八部分:制作简历和如何面试--长期维护