Python 디자인 모델 의 원형 모델 실례 상세 설명
프로 토 타 입 모드(Prototype Pattern):프로 토 타 입 인 스 턴 스 로 생 성 대상 의 종 류 를 지정 하고 이 프로 토 타 입 을 복사 하여 새로운 대상 을 만 듭 니 다.
원형 모드 의 간단 한 demo:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
__author__ = 'Andy'
"""
――
(Prototype Pattern): ,
:
"""
from copy import copy, deepcopy
#
class Prototype(object):
def clone(self):
pass
def deep_clone(self):
pass
#
class WorkExperience(object):
def __init__(self):
self.timearea = ''
self.company = ''
def set_workexperience(self,timearea, company):
self.timearea = timearea
self.company = company
#
class Resume(Prototype):
def __init__(self,name):
self.name = name
self.workexperience = WorkExperience()
def set_personinfo(self,sex,age):
self.sex = sex
self.age = age
pass
def set_workexperience(self,timearea, company):
self.workexperience.set_workexperience(timearea, company)
def display(self):
print self.name
print self.sex, self.age
print ' ',self.workexperience.timearea, self.workexperience.company
def clone(self):
return copy(self)
def deep_clone(self):
return deepcopy(self)
if __name__ == '__main__':
obj1 = Resume('andy')
obj2 = obj1.clone() #
obj3 = obj1.deep_clone() #
obj1.set_personinfo(' ',28)
obj1.set_workexperience('2010-2015','AA')
obj2.set_personinfo(' ',27)
obj2.set_workexperience('2011-2017','AA') #
obj3.set_personinfo(' ',29)
obj3.set_workexperience('2016-2017','AA') #
obj1.display()
obj2.display()
obj3.display()
실행 결과:andy
남자
경력 2011-2017 AA
andy
남자
경력 2011-2017 AA
andy
남자
경력 2016-2017 AA
상류의 디자인 은 다음 과 같다.
이력서 류 Resume 은 추상 적 인 원형 인 clone 과 deepclone 방법 을 계승 하여 이력서 류 에 대한 복 제 를 실현 하고 이력서 류 는 업무 경력 류 를 인용 하여 이력서 류 를 복사 하 는 동시에 부분 속성 을 수정 할 수 있 습 니 다.
더 많은 파 이 썬 관련 내용 은 본 사이트 의 주 제 를 볼 수 있 습 니 다.
본 논문 에서 말 한 것 이 여러분 의 Python 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.