向master分支的基本结构目录中新增享元模式 #2

Merged
p46318075 merged 3 commits from :master into master 9 months ago

@ -1,8 +0,0 @@
享元模式是一种结构型设计模式,在享元模式中,对象被设计为可共享的,可以被多个上下文使用,而不必在每个上下文中都创建新的对象。
假如我们有大量不同的词频分析需求有时需要词频前10的单词有时需要词频前20的单词那就需要创建多个词频统计器每个词频统计器都独立创建并存储其内部状态
那么系统的内存占用可能会很大,在这种情况下,享元模式共享相同类型的词频统计器对象,每种类型的词频统计器只需创建一个共享实例,然后通过设置不同的参数个性化
每个对象,通过共享相同的内部状态,降低了对象的创建和内存占用成本。
例如我需要对3个文件获取词频前十的单词对另外3个文件获取词频前二十的单词那么我只需要创建2个词频统计器对象每个对象都存储相同的内部状态获取的词数
一个对象获取前十的单词一个对象获取前二十的单词而不用创建6个对象

@ -1,9 +1,12 @@
# -*- encoding:utf-8 -*- # -*- encoding:utf-8 -*-
from cppy.cp_util import * from cppy.cp_util import *
'''享元模式 享元模式是一种结构型设计模式,在享元模式中,对象被设计为可共享的,可以被多个上下文使用,而不必在每个上下文中都创建新的对象。 '''
如果我们有大量不同的词频分析需求有时需要词频前10的单词有时需要词频前20的单词有时还需要限定词汇的长度那就需要创建多个词频统计器每个词频统计器都独立创建并存储其内部状态 享元模式 享元模式是一种结构型设计模式在享元模式中对象被设计为可共享的可以被多个上下文使用而不必在每个上下文中都创建新的对象
那么系统的内存占用可能会很大在这种情况下享元模式共享相同类型的词频统计器对象每种类型的词频统计器只需创建一个共享实例然后通过设置不同的参数个性化 如果我们有大量不同的词频分析需求有时需要词频前10的单词有时需要词频前20的单词有时还需要限定词汇的长度那就需要创建多个词频统计器每个词频统
每个对象通过共享相同的内部状态降低了对象的创建和内存占用成本 计器都独立创建并存储其内部状态那么系统的内存占用可能会很大在这种情况下享元模式共享相同类型的词频统计器对象每种类型的词频统计器只需创建一个
共享实例然后通过设置不同的参数个性化每个对象通过共享相同的内部状态降低了对象的创建和内存占用成本
例如我需要对3个文件获取词频前十的单词对另外3个文件获取词频前二十的单词那么我只需要创建2个词频统计器对象每个对象存储相同的内部状态一个对象
获取前十的单词一个对象获取前二十的单词而不用创建6个对象
''' '''
#以需要的词频数量分类 #以需要的词频数量分类
# class Type(number): # class Type(number):
@ -42,6 +45,8 @@ def process_command(factory: WordFrequencyControllerFactory, number: str):
controller_type = number controller_type = number
WordFrequencyController = factory.get_WordFrequencyController(controller_type,testfilepath) WordFrequencyController = factory.get_WordFrequencyController(controller_type,testfilepath)
WordFrequencyController.print_word_freqs(int(number)) WordFrequencyController.print_word_freqs(int(number))
if __name__ == "__main__": if __name__ == "__main__":
factory = WordFrequencyControllerFactory() factory = WordFrequencyControllerFactory()
while True: while True:

Loading…
Cancel
Save