zoukankan      html  css  js  c++  java
  • 《Head First 设计模式》 第一章 设计模式入门

    原则

    模式

    实践

    待了解

    关联

    原则

    1、封装变化

    找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起

    2、多用组合,少用继承

    3、针对接口编程,而不是不针对实现编程

    模式

    策略模式

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

    图 23. 策略模式的结构

    Context:使用不同策略的环境,它可以根据自身的条件选择不同的策略实现类来完成所要的操作。它持有一个策略实例的引用。创建具体策略对象的方法也可以由他完成。
    Strategy:抽象策略,定义每个策略都要实现的策略方法
    ConcreteStrategy:具体策略实现类,实现抽象策略中定义的策略方法

    图及说明来源于:

    https://www.ibm.com/developerworks/cn/java/j-lo-spring-principle/index.html

    与工厂模式的差别

    工厂模式是创建型模式 ,它关注对象创建,提供创建对象的接口. 让对象的创建与具体的使用客户无关。
    策略模式是对象行为型模式 ,它关注行为和算法的封装 。它定义一系列的算法,把每一个算法封装起来,并且使它们可相互替换。使得算法可独立于使用它的客户而变化

    用一个例子说明:
    我们去旅行。策略模式的做法:有几种方案供你选择旅行,选择火车好呢还是骑自行车,完全有客户自行决定去构建旅行方案(比如你自己需要去买火车票,或者机票)。而工厂模式是你决定哪种旅行方案后,不用关注这旅行方案怎么给你创建,也就是说你告诉我方案的名称就可以了,然后由工厂代替你去构建具体方案(工厂代替你去买火车票)。

    来源于:

    https://blog.csdn.net/hguisu/article/details/7558249

    实践

    书中的实例,看了这张图,就能回想起策略模式的实际应用方式

    图片来源于《Head First 设计模式》 第 22 页

    # 待了解

    第 11、12 页,关于接口、实现、超类型,看不大明白

    关联

    哪里用到了策略模式?

    使用 Spring 时,自动注入 service 类(注入时使用的是接口作为变量),就是使用了策略模式,当我们调用 service 的方法时,调用的是 service 的具体实现类的对应方法

    不错的博客

    https://blog.csdn.net/hguisu/article/details/7558249

  • 相关阅读:
    js打印指定元素内容
    c# RedisHelper
    T4生成整理
    T4随记
    c# 文本超长截断
    mysql自动安装教程说明
    完全卸载mysql免安装版
    解决WebClient或HttpWebRequest首次连接缓慢问题
    c# 停靠窗体
    c#透明panel
  • 原文地址:https://www.cnblogs.com/stone94/p/12833131.html
Copyright © 2011-2022 走看看