zoukankan      html  css  js  c++  java
  • 设计模式6(组合模式,模板方法,策略模式)

    组合模式

    将对象组合为"部分-整体"的层次结构,组合模式使得用户对单个对象和组合对象的使用统一的接口

        关键在于抽象类的定义,为leaf 和composite提供了统一的接口

    1. 操作接口
    2. 添加leaf
    3. 删除leaf
    4. 获取特定leaf

    装饰者模式

    可以将装饰者支持组合模式需要的一些功能

         

    享元模式

     

    当组合模式中出现大量相似的组件对象并且状态可以从组件对象分离

       

    迭代模式

           

    访问者

    在不修改原有对象结构的基础上为基添加新功能

         

    职责链模式

    其实现请求都和接收者之前解耦,其将多个接收者组合起来,组成责任链,可以使用组合模式构建责任链

         

    命令模式

         

    组合为宏命令

    模板方法

        定义一个操作中的算法骨架,而将一些步骤延时到子类中实现,从而使子类可以不改变一个算法

    结构即可重定义该算法的某些特定步骤

    模板方法

       

    工厂方法

    模板方法可以通过工厂方法获取要调用的对象

     

    策略模式

     

    由模板方法固定算法骨架,而策略模式把某一步骤具体的实现实现算法进行封闭,所有算法的封装都是等价的,可以替换,具体选用哪个策略由外部决定。

    策略模式 strategy

        定义一系列算法,把它们一个个进行封装,并且使它们可以相互替换,本模式使算法独立于使用的客户而进行变化

    为了使算法独立,引入上下方对象,用户选择好算法把由上下文对象持有。重心不是如何实现算法,而如果组织调用这些算法

    从而使程序上灵活,方便维护和扩展

    分离算法,选择实现

    策略

    可以互相替换

    由客户端决定使用哪个策略

    状态模式

    状态模式在实现状态算法的同时还要维护状态数据的变化。这些实现状态对应的功能的类之间不能进行替换。

    由上下文决定,或者状态模式中维护一个状态数据

    享元模式

     

    当算法频繁被使用时,可以将算法对象加入享元模式

    酒肉穿肠过 佛祖心中留 世人若学我 如同入魔道
  • 相关阅读:
    input 标签取消readOnly属性
    python selenium 跑脚本的时候按钮无法点击的解决办法
    Python Selenium 调用IE浏览器失败Unexpected error launching Internet Explorer解决方法
    转载--Python random模块(获取随机数)常用方法和使用例子
    转载--python selenium实现文件、图片上传
    ieDriver启动IE浏览器显示This is the initial start page for the WebDriver server的解决办法
    自动化测试用例设计学习心得总结
    关于selene安装插件ide不能识别插件的问题解决办法
    cmd 启动mysql
    最大子序列
  • 原文地址:https://www.cnblogs.com/jspdelphi/p/7807604.html
Copyright © 2011-2022 走看看