首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

设计方式十二(组合模式,python语言实现)

2012-12-20 
设计模式十二(组合模式,python语言实现)基本原理请参考相关书籍。直接给实例组合模式应用在类组织结构、目录

设计模式十二(组合模式,python语言实现)

基本原理请参考相关书籍。直接给实例

组合模式应用在类似组织结构、目录等自包含结构

本文给出目录管理的例子

设计方式十二(组合模式,python语言实现)

 

# -*- coding: utf-8 -*-######################################################## # Composite.py# Python implementation of the Class Client# Generated by Enterprise Architect# Created on:      12-十二月-2012 9:06:54# #######################################################from __future__ import divisionfrom __future__ import print_functionfrom __future__ import unicode_literalsfrom future_builtins import *    class Document(object):    """This class (a) defines behaviour for components having children, (b) stores    child components, and (c) implements child-related operations in the Component    interface.    """    def __init__(self, name):        super(Document,self).__init__()        self.name=name        pass    def Add(self, document):        pass    def GetChild(self):        pass    def Operation(self,depth):        # forall g in children        #   g.Operation();                pass    def Remove(self, document):        pass    passclass File(Document):    """This class (a) defines behaviour for components having children, (b) stores    child components, and (c) implements child-related operations in the Component    interface.    """    def __init__(self, name):        super(File,self).__init__(name)        pass    def Add(self, document):        pass    def GetChild(self):        pass    def Operation(self,depth=1):        # forall g in children        #   g.Operation();                print('-'*depth + self.name)        pass    def Remove(self, document):        pass    passclass Folder(Document):    """This class (a) defines behaviour for components having children, (b) stores    child components, and (c) implements child-related operations in the Component    interface.    """    m_Document= Document("None")    def __init__(self, name):        super(Folder,self).__init__(name)        self.ls=list()               pass    def Add(self, document):        self.ls.append(document)        pass    def GetChild(self):        print(self.ls)        pass    def Operation(self,depth=1):        # forall g in children        #   g.Operation();                print('-'*depth + self.name)               for child in self.ls:            child.Operation(depth+2)            pass        pass    def Remove(self, document):        pass    pass#客户端    if __name__=="__main__":            class Client:        """This class manipulates objects in the composition through the Component        interface.                """        m_Document= Document("None")                        root= Folder("root")                file1=File("file1")        root.Add(file1)                            folder1=Folder("folder1")        root.Add(folder1)                        folder2=Folder("folder2")                file2=File("file2")        folder2.Add(file2)                folder3=Folder("folder3")        folder2.Add(folder3)                folder1.Add(folder2)                                root.Operation(1)

运行结果:
设计方式十二(组合模式,python语言实现)

热点排行