浅谈设计模式

面向对象程序设计的设计模式的重要性就像数据结构对于结构化的程序设计一样同等重要。可以使所生成的软件体系结构更加精巧、简洁和易于理解。软件体系结构的好坏直接决定了软件系统的命运,而模式的应用可以帮助建立出色的、稳定的软件体系结构。

设计模式的基本组成大致可以分为4个方面:

  • 模式名称(pattern name):一个助记符,用来表名模式大概的问题、解决方案和效果。
  • 问题(Problem):描述应该在何时使用该模式,
  • 解决方案(solution):描述了设计的组成部分,他们之间的相互关系以及各自的职责和写作方式。
  • 效果(consequence):描述模式实行后的效果及应该注意的权衡问题。

设计模式按目的分类分类:

  • 创建型模式:与对象的创建有关,即:抽象的实例化过程。
  • 结构型模式:如何组合类和对象以获得更大的结构。
  • 行为型模式:涉及到算法及职责间的分配。

设计模式按照范围来分配(指定模式是用于类还是对象):

  • 类模式:处理类与子类之间的关系,通过继承机制来实现,是静态的,在编译阶段已经确定下来。
  • 对象模式:处理对象之间的关系,这些关系可以再runtime时候变化,是动态的。
  • 从某种程度上来说,几乎所有的设计模式都使用到了继承机制,所以“类模式”只指那些集中处理类之间关系的模式,而大部分模式是对象模式。

设计模式的分类


  • adapter:将一个类的接口转化成客户希望的另外一个接口,使得原本由于接口不兼容的类可以一起工作。
  • bridge:将抽象部分与它的实现部分分离,使得它们可以独立地变化。
  • chain of responsibility:为解除请求的发送者和接受者之间的耦合,而使多个对象有机会处理这个请求。将这些对象组成一条链,沿着这条链传递这个请求,直到有一个对象处理它。
  • command:将一个请求封装成一个对象,从而可以使你可以用不同的请求对客户进行参数化。
  • Composite :将对象组合成树形结构以表示“部分-整体”的层次结构。Composite使得客户对单个对象和复合对象的使用具有一致性。
  • Decorator:动态地给一个对象添加一些额外的职责。就扩展功能而言, Decorator模式比生成子类方式更为灵活。
  • Facade:为子系统中的一组接口提供一个一致的界面, Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用.
  • Mediator:用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
  • Memento:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到保存的状态。
  • Observer:定义对象间的一种一对多的依赖关系,以便当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动刷新。
  • Singleton(单例):保证一个类仅有一个实例,并提供一个访问它的全局访问点。
  • Strategy(策略):定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。本模式使得算法的变化可独立于使用它的客户。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java是一种面向对象的编程语言,设计模式可以帮助我们更好地编写面向对象的代码。在JavaWeb项目中,设计模式可以帮助我们解决一些常见的问题,比如复杂的业务逻辑、代码重用、可扩展性等等。 下面是一些常见的设计模式在JavaWeb项目中的使用: 1. MVC模式:MVC模式是一种常见的设计模式,它将应用程序分为三个部分:模型、视图和控制器。在JavaWeb项目中,我们可以使用MVC模式来分离业务逻辑和用户界面,并且可以更容易地进行修改和维护。 2. 工厂模式:工厂模式是一种创建型设计模式,它可以帮助我们更好地组织代码并提高代码的可复用性。在JavaWeb项目中,我们可以使用工厂模式来创建对象,并且可以根据需要动态地创建不同的对象。 3. 单例模式:单例模式是一种创建型设计模式,它保证了一个类只有一个实例,并提供了一个全局访问点。在JavaWeb项目中,我们可以使用单例模式来管理共享资源,比如数据库连接池。 4. 观察者模式:观察者模式是一种行为型设计模式,它定义了一种一对多的依赖关系,当一个对象的状态发生改变时,它的所有依赖对象都会得到通知并自动更新。在JavaWeb项目中,我们可以使用观察者模式来实现事件驱动的编程。 5. 装饰器模式:装饰器模式是一种结构型设计模式,它允许我们动态地添加或修改一个对象的功能。在JavaWeb项目中,我们可以使用装饰器模式来扩展一个类的功能,而不需要修改它的原始代码。 当然,在JavaWeb项目中还有很多其他的设计模式可以使用,具体使用哪些设计模式需要根据具体的情况而定。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值