• HeadFirst设计模式读书笔记(1)-策略模式(Strategy Pattern)


    策略模式(Strategy Pattern):

    定义了了算法簇,分别封装起来,让它们之间可以相互替换,此模式让算法的变化独立于使用算法的客户端。

    第一个设计原则:找出应用中可能需要变化之处,把他们独立出来,不要和哪些不需要变化的代码混在一起。

    • 理解1:把会变化的部分取出来并[封装]起来,好让其他部分不会受到影响。
    • 理解2:把会变化的部分取出并封装起来,以便以后可以方便的扩充此部分,而不影响不需要变化的部分

    第二个设计原则:针对接口编程,而不是针对实现编程。

    [针对接口编程]真正的意思是[针对超类型(supertype)编程],[针对接口编程]的关键就在于多态,利用多态,程序可以针对超类型编程,执行时会根据实际的类型执行到真正的行为,变量的声明类型,应该是超类型,通常是一个抽象类或者是一个接口,如此,只要是具体实现此超类型的类所产生的对象,都可以指定给这个变量,声明类时,不用理会以后执行的真正对象类型。

    第三个设计原则:多用组合,少用继承

    使用组合建立系统具有很大的弹性,不仅可以将算法簇封装成类,更可以在运行时动态地改变行为,只要组合的行为对象,符合正确的接口标准即可。

    要点:

    • 知道OO基础,并不足以让你设计出良好的OO系统。
    • 良好的OO设计必须具备的三个特性:可复用,可扩充,可维护。
    • 模式可以让我们建造出具有良好OO质量的系统。
    • 模式被认证为历经验证的OO设计经验。
    • 模式不是代码,而是针对设计问题的解决方案。你把他们应用到特定的应用中。
    • 模式不是被发明,而是被发现。
    • 大多数的模式与原则,都着眼于软件变化的主题。
    • 大多数模式都允许系统局部改变独立于其他部分。
    • 我们常会把系统中会变化的部分抽出来封装。
    • 模式让开发人员有共享的语言,最大化沟通的价值。
  • 相关阅读:
    Struts2中ModelDriven的使用
    Android 如何让 app 自行处理 power key M
    url后面带斜杠与不带斜杠的区别
    Http Request Method:options
    org.springframework.boot.builder.SpringApplicationBuilder.<init>
    Uncaught (in promise) DOMException: Failed to execute 'open' on 'XMLHttpRequest': Invalid URL
    git将多个commit合并成一个
    idea error:Command line is too long
    java使用zxing插件绘制二维码
    git解决冲突插件之Beyond Compare
  • 原文地址:https://www.cnblogs.com/candyzkn/p/3511003.html
Copyright © 2020-2023  润新知