设计模式理解

常有人调侃设计模式:语言留下的坑,就要设计模式来填。

设计模式就是描述在各种不同情况下,要怎么解决问题的一种方案。

对于一些项目,我们不可能做到一次开发终身使用,而是随着需求的不断增多,我们需要对程序进行不断地修改,以此来适应新的需求,通过好的设计模式,可以使我们程序松耦合,减少彼此之间的依赖,从而使其扩展性更强,大大减少后期维护成本,降低后期开发难度。

设计模式分类
设计模式按照其目标进行分类可以分为创建型, 结构型,行为型

创建型

  1. 单例模式(Singleton)
  2. 生成器模式(Builder)
  3. 原型模式(Prototype)
  4. 抽象工厂模式(Abstract Factory)
  5. 工厂方法模式(Factory Method)

行为型

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

结构型

  1. 装饰者模式(Decorator)
  2. 代理模式(Proxy)
  3. 组合模式(Composite)
  4. 桥连接模式(Bridge)
  5. 适配器模式(Adapter)
  6. 蝇量模式(Flyweight)
  7. 外观模式(Facade)
时间: 2024-12-27 19:56:09

设计模式理解的相关文章

设计模式理解(二)创建型——单例、原型

设计模式理解(二)单例(Singleton)与原型(Prototype) 为什么一起写,因为懒.... 单例,就是用了面向对象语言的一些奇技淫巧,把构造函数私有了,然后用一个自身类型的静态指针作为全局唯一的实例的引用.碰到并发之类就呵呵了. 这么简单都能画个UML图,还煞有介事似的,我晕. -----------------------   分割线   ------------------------ 原型(Prototype) 我理解就是给一个类糊弄个cloneable之类的接口,让它自己决定

JAVA:连接池技术说明以及MVC设计模式理解

JAVA:连接池技术说明以及MVC设计模式理解

设计模式理解(十)结构型——享元(Flyweight)

最后一个结构型,享元.没有太多的项目经验,对这种模式只有一种概念上的理解,就是为了节约内存等资源,把可重用的东西只申请一次,然后处处调用,同时用Hash进行管理. 直接上图: 代码: /********* 大话设计模式上的代码 ************/ abstract class Flyweight{ public abstract void Operation(int extrinsicstate); } class ConcreteFlyweight : Flyweight{ publi

js架构设计模式——理解javascript中的MVVM开发模式

理解javascript中的MVVM开发模式 http://blog.csdn.net/slalx/article/details/7856769 MVVM的全称是Model View ViewModel,这种架构模式最初是由微软的MartinFowler作为微软软件的展现层设计模式的规范提出,它是MVC模式的衍生物,MVVM模式的关注点在能够支持事件驱动的UI开发平台,例如HTML5,[2][3] WindowsPresentation Foundation (WPF), Silverligh

java设计模式——理解

把简单的事情复杂化是很多新程序员对它的理解,然而设计模式之所以产生,受到推崇,因为它让你更加注重设计,当你的代码被复用.移植.修改.扩展时,你才会体会到它的优势. 创建型模式 1.FACTORY-追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说"来四个鸡翅"就行了.麦当劳和肯德基就是生产鸡翅的Factory 工厂模式:客户类和工厂类分开.消费者任何时候需要某种产品,只需向工厂请求即可.消费者无须修改就可

MVC与MVVM设计模式理解

MVC设计模式(View和Model之间不能直接通信) MVC是一种架构模式,M表示Model,V表示视图View,C表示控制器Controller: Model负责存储.定义.操作数据(Struts中Service和Form): View用来展示给用户,并且和用户进行交互: Controller是Model和View的协调者,Controller把Model中的数据拿过来给View使用.Controller可以直接与Model和View进行通信,而View不能与Controller直接通信.,

selenium Object Page 设计模式理解及实现!

Page Object模式是Selenium中的一种测试设计模式,主要是将每一个页面设计为一个Class,其中包含页面中需要测试的元素(按钮,输入框,标题 等),这样在Selenium测试页面中可以通过调用页面类来获取页面元素,这样巧妙的避免了当页面元素id或者位置变化时,需要改测试页面代码的情况. 当页面元素id变化时,只需要更改测试页Class中页面的属性即可. 获取页面中元素的属性可以通过id,class或者XPath获取,在id唯一的情况下,可以使用id获取页面元素,否则可以使用XPat

策略设计模式理解

我们开发过程中,常因为一开始的架构不怎么合理而有可能造成后边客户或者项目经理改需求时,造成我们需要修改原来的代码,一方面是可能写的时间久了回顾起来麻烦,另一方面是牵一发而动全身,改动一个地方造成所有的地方都需要改动,由此可见一个好的架构是多么重要.那么今天给大家讲一种策略设计模式来定义一个利于扩展的框架. 简单举个例子,我们开发一款游戏如果有需要定义一个角色,有武器攻击,有武器防御,那我们可能会觉得很简单,然后一开始定义就直接定义一个父类,再加一个子类实现,代码如下: abstract clas

Java 设计模式 理解笔记

最近在学习设计模式,把各个学习的心得记录下来,留着自己以后用!(示例自己百度) 1.策略模式 适用情况 使用于用户在使用时随时切换算法,例如:我想造一只木鸭子,过一会我又想造一只汗鸭子,今天我想让鸭子会飞,明天让他不会飞. 构造步骤 首先建立与“鸭子”无关的功能接口类,飞行接口.鸣叫接口. 构造功能接口类的对象:不会飞行,会飞行,像火箭一样飞:会游泳,不会游泳. 构造抽象类“鸭子”.将飞行接口,名叫接口加入类,在抽象类中将恒定不变的功能实现,可变的功能由实现抽象类的对象实现, 构造实际对象“木鸭