专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »Java教程 » 23种设计模式:常见的23种设计模式 »正文

23种设计模式:常见的23种设计模式

来源: 发布时间:星期四, 2008年12月18日 浏览:2次 评论:0
        工厂模式:客户类和工厂类分开消费者任何时候需要某种产品只需向工厂请求即可消费者无须修改就可以接纳新产品缺点是当产品修改时工厂类也要做相应修改如:如何创建及如何向客户端提供 

  建造模式:将产品内部表象和产品生成过程分割开来从而使个建造过程生成具有区别内部表象产品对象建造模式使得产品内部表象可以独立变化客户不必知道产品内部组成细节建造模式可以强制实行种分步骤进行建造过程 

  工厂思路方法模式:核心工厂类不再负责所有产品创建而是将具体创建工作交给子类去做成为个抽象工厂角色仅负责给出具体工厂类必须实现接口而不接触哪个产品类应当被例子化这种细节 

  原始模型模式:通过给出个原型对象来指明所要创建对象类型然后用复制这个原型对象思路方法创建出更多同类型对象原始模型模式允许动态增加或减少产品类产品类不需要非得有任何事先确定等级结构原始模型模式适用于任何等级结构缺点是每个类都必须配备个克隆思路方法 

  单例模式:单例模式确保某个类只有个例子而且自行例子化并向整个系统提供这个例子单例模式单例模式只应在有真正“单例子”需求时才可使用 

  适配器(变压器)模式:个类接口变换成客户端所期待种接口从而使原本因接口原因不匹配而无法起工作两个类能够起工作适配类可以根据参数返还个合适例子给客户端 
 
  桥梁模式:将抽象化和实现化脱耦使得 2者可以独立变化也就是说将他们的间强关联变成弱关联也就是指在个软件Software系统抽象化和实现化的间使用组合/聚合关系而不是继承关系从而使两者可以独立变化 

  合成模式:合成模式将对象组织到树结构中可以用来描述整体和部分关系合成模式就是个处理对象树结构模式合成模式把部分和整体关系用树结构表示出来合成模式使得客户端把个个单独成分对象和由他们复合而成合成对象同等看待 

  装饰模式:装饰模式以对客户端透明方式扩展对象功能是继承关系个替代方案提供比继承更多灵活性动态给个对象增加功能这些功能可以再动态撤消增加由些基本功能排列组合而产生非常大量功能 

  门面模式:外部和个子系统通信必须通过个统门面对象进行门面模式提供个高层次接口使得子系统更易于使用个子系统只有个门面类而且此门面类只有个例子也就是说它是个单例模式但整个系统可以有多个门面类 

  享元模式:FLYWEIGHT在拳击比赛中指最轻量级享元模式以共享方式高效支持大量细粒度对象享元模式能做到共享关键是区分内蕴状态和外蕴状态内蕴状态存储在享元内部不会随环境改变而有所区别外蕴状态是随环境改变而改变外蕴状态不能影响内蕴状态它们是相互独立将可以共享状态和不可以共享状态从常规类中区分开来将不可以共享状态从类里剔除出去客户端不可以直接创建被共享对象而应当使用个工厂对象负责创建被共享对象享元模式大幅度降低内存中对象数量  

  代理模式:代理模式给某个对象提供个代理对象并由代理对象控制对源对象引用代理就是个人或个机构代表另个人或者个机构采取行动某些情况下客户不想或者不能够直接引用个对象代理对象可以在客户和目标对象直接起到中介作用客户端分辨不出代理主题对象和真实主题对象代理模式可以并不知道真正被代理对象而仅仅持有个被代理对象接口这时候代理对象不能够创建被代理对象被代理对象必须有系统其他角色代为创建并传入 

  责任链模式:在责任链模式中很多对象由每个对象对其下家引用而接 

  命令模式:命令模式把个请求或者操作封装到个对象中命令模式把发出命令责任和执行命令责任分割开委派给区别对象命令模式允许请求方和发送方独立开来使得请求方不必知道接收请求接口更不必知道请求是如何被接收以及操作是否执行何时被执行以及是如何被执行系统支持命令撤消

  解释器模式:给定个语言后解释器模式可以定义出其文法种表示并同时提供个解释器客户端可以使用这个解释器来解释这个语言中句子解释器模式将描述怎样在有了个简单文法后使用模式设计解释这些语句在解释器模式里面提到语言是指任何解释器对象能够解释任何组合在解释器模式中需要定义个代表文法命令类等级结构也就是系列组合规则个命令对象都有个解释思路方法代表对命令对象解释命令对象等级结构中对象任何排列组合都是个语言 

  迭代子模式:迭代子模式可以顺序访问个聚集中元素而不必暴露聚集内部表象多个对象聚在起形成总体称的为聚集聚集对象是能够包容组对象容器对象迭代子模式将迭代逻辑封装到个独立子对象中从而和聚集本身隔开迭代子模式简化了聚集界面个聚集对象都可以有个或个以上迭代子对象个迭代子迭代状态可以是彼此独立迭代算法可以独立于聚集角色变化 

  调停者模式:调停者模式包装了系列对象相互作用方式使得这些对象不必相互明显作用从而使他们可以松散偶合当某些对象的间作用发生改变时不会立即影响其他些对象的间作用保证这些作用可以彼此独立变化调停者模式将多对多相互作用转化为对多相互作用调停者模式将对象行为和协作抽象化把对象在小尺度行为上和其他对象相互作用分开处理 

  备忘录模式:备忘录对象是个用来存储另外个对象内部状态快照对象备忘录模式用意是在不破坏封装条件下个对象状态捉住并外部化存储起来从而可以在将来合适时候把这个对象还原到存储起来状态 

  观察者模式:观察者模式定义了对多依赖关系让多个观察者对象同时监听某个主题对象这个主题对象在状态上发生变化时会通知所有观察者对象使他们能够自动更新自己  

  状态模式:状态模式允许个对象在其内部状态改变时候改变行为这个对象看上去象是改变了它状态模式把所研究对象行为包装在区别状态对象里个状态对象都属于个抽象状态类个子类状态模式意图是让个对象在其内部状态改变时候其行为也随的改变状态模式需要对每个系统可能取得状态创立个状态类子类当系统状态变化时系统便改变所选子类 

  策略模式:策略模式针对组算法将每个算法封装到具有共同接口独立类中从而使得它们可以相互替换策略模式使得算法可以在不影响到客户端情况下发生变化策略模式把行为和环境分开环境类负责维持和查询行为类各种算法在具体策略类中提供由于算法和环境独立开来算法增减修改都不会影响到环境和客户端 

  模板思路方法模式:模板思路方法模式准备个抽象类将部分逻辑以具体思路方法以及具体构造子形式实现然后声明些抽象思路方法来迫使子类实现剩余逻辑区别子类可以以区别方式实现这些抽象思路方法从而对剩余逻辑有区别实现先制定个顶级逻辑框架而将逻辑细节留给具体子类去实现 

  访问者模式:访问者模式是封装些施加于某种数据结构元素的上操作旦这些操作需要修改接受这个操作数据结构可以保持不变访问者模式适用于数据结构相对未定系统它把数据结构和作用于结构上操作的间耦合解脱开使得操作集合可以相对自由演化访问者模式使得增加新操作变很容易就是增加个新访问者类访问者模式将有关行为集中到个访问者对象中而不是分散到个个节点类中当使用访问者模式时要将尽可能多对象浏览逻辑放在访问者类中而不是放到它子类中访问者模式可以跨过几个类等级结构访问属于区别等级结构成员类

相关文章

读者评论

  • 共0条 分0页

发表评论

  • 昵称:
  • 内容: