From b1911ef9cb3e0fc025b47829d290a93dec3d50aa Mon Sep 17 00:00:00 2001 From: zj3D Date: Wed, 13 Mar 2024 09:27:15 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B8=85=E6=B4=81=E4=BB=A3=E7=A0=8138?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 基本结构/051享元模式/tf-38.py | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/基本结构/051享元模式/tf-38.py b/基本结构/051享元模式/tf-38.py index 63fbe16..eab1e50 100644 --- a/基本结构/051享元模式/tf-38.py +++ b/基本结构/051享元模式/tf-38.py @@ -1,18 +1,13 @@ -# -*- encoding:utf-8 -*- -from cppy.cp_util import * ''' -享元模式 享元模式是一种结构型设计模式,在享元模式中,对象被设计为可共享的,可以被多个上下文使用,而不必在每个上下文中都创建新的对象。 +享元模式中,对象被设计为可共享的,被多个上下文使用,而不必在每个上下文中都创建新的对象。 如果我们有大量不同的词频分析需求,有时需要词频前10的单词,有时需要词频前20的单词,有时还需要限定词汇的长度,那就需要创建多个词频统计器,每个词频统 -计器都独立创建并存储其内部状态,那么系统的内存占用可能会很大,在这种情况下,享元模式共享相同类型的词频统计器对象,每种类型的词频统计器只需创建一个 -共享实例,然后通过设置不同的参数个性化每个对象,通过共享相同的内部状态,降低了对象的创建和内存占用成本。 +计器都独立创建并存储其内部状态,在这种情况下,享元模式共享相同类型的词频统计器对象,只需创建一个共享实例,然后通过设置不同的参数个性化每个对象,通过共享相同的内部状态,降低了对象的创建和内存占用成本。 例如,我需要对3个文件获取词频前十的单词,对另外3个文件获取词频前二十的单词,那么我只需要创建2个词频统计器对象,每个对象存储相同的内部状态,一个对象 获取前十的单词,一个对象获取前二十的单词,而不用创建6个对象 ''' -#以需要的词频数量分类 -# class Type(number): -def get_number(): - number = int(input("请输入需要显示词频前几的单词")) - return number + +from cppy.cp_util import * + #定义享元接口 class WordFrequencyController(): @@ -37,8 +32,7 @@ class WordFrequencyControllerFactory(): def get_WordFrequencyController(self, controller_type,testfilepath): if controller_type not in self.types: self.types[controller_type] = ConcreteWordFrequencyController(controller_type,testfilepath) - #创建新的享元对象 - print(self.types)#显示已存在的享元对象 + #创建新的享元对象 return self.types[controller_type]#重复使用已存在的享元对象 def process_command(factory: WordFrequencyControllerFactory, number: str):