<commit_before># 一周一模式之 - 策略模式

### 意图
    定义一系列的算法，把它们一个个封装起来，使它们可以相互替换。使得算法可以独立于它的使用者而变化。

### 要解决的问题
    当Context需要或可能使用到多种算法时，如果直接将算法写在Context里，代码势必会比较复杂，日后要修改算法，或者增加算法都需要去Context里修改，这是比较困难和低效的，也是比较危险的。如果将算法封装起来，我只要知道这个算法类的规范就可以对算法进行维护了。

### 适用场景
    - 1. 需要使用一个算法的不同变体。
    - 2. 当要计算的一个结果有多种情况时，我们可以把每种情况封装成一个个策略。避免使用晦涩的条件语句。
    
### 效果（优点与缺点）
    - 1. 算法得以重用
    - 2. 降低了Context的复杂度
    - 3. 消除了一些晦涩的条件语句<commit_msg>Update pattern-strategy.md<commit_after># 一周一模式之 - 策略模式

### 意图
    定义一系列的算法，把它们一个个封装起来，使它们可以相互替换。使得算法可以独立于它的使用者而变化。

### 要解决的问题
    当Context需要或可能使用到多种算法时，如果直接将算法写在Context里，代码势必会比较复杂，日后要修改算法，或者增加算法都需要去Context里修改，这是比较困难和低效的，也是比较危险的。如果将算法封装起来，我只要知道这个算法类的规范就可以对算法进行维护了。

### 适用场景
    1. 需要使用一个算法的不同变体。
    2. 当要计算的一个结果有多种情况时，我们可以把每种情况封装成一个个策略。避免使用晦涩的条件语句。
    
### 效果（优点与缺点）
    1. 算法得以重用
    2. 降低了Context的复杂度
    3. 消除了一些晦涩的条件语句
{'fraction_non_alphanumeric': 0.1045828437132785, 'fraction_numerical': 0.011750881316098707, 'mean_word_length': 4.916666666666667, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1338453', 'n_tokens_mistral': 709, 'n_tokens_neox': 783, 'n_words': 38}