디자인 모드 (7) - 원형 모드

2282 단어
프로 토 타 입 모드 (Prototype Pattern) 는 중 복 된 대상 을 만 들 고 대상 을 만 드 는 대 가 를 낮 추 는 데 사 용 됩 니 다.
1. 수요 예:
프로젝트 에서 수요 개발 응용 장면: 1. 간단 한 프로젝트 개발 은 초급 엔지니어 가 완성 한다.2. 고난 도의 프로젝트 개발 은 고급 엔지니어 가 완성 한다.
도표
3. 코드 인 스 턴 스
1. 엔지니어 추상 류: 엔지니어
package com.lance.prototype;

public abstract class Engineer implements Cloneable {

    private String duty;

    public String getDuty() {
        return duty;
    }

    public void setDuty(String duty) {
        this.duty = duty;
    }

    private String engineerName;


    public String getEngineerName() {
        return engineerName;
    }

    public void setEngineerName(String engineerName) {
        this.engineerName = engineerName;
    }

    abstract void develop(String program);

    @Override
    public Object clone() {
        Object clone = null;
        try {
            clone = super.clone();
        } catch (CloneNotSupportedException e) {
            e.printStackTrace();
        }
        return clone;
    }

}
  • 엔지니어 실현 유형: EngineerImpl
  • package com.lance.prototype;
    
    public class EngineerImpl extends Engineer {
    
        @Override
        public void develop(String program) {
            System.out.println(this.getDuty() +":"+ this.getEngineerName() + " develop " + program);
    
        }
    }
    
    

    3. 주 클래스: PrototypePattern
    package com.lance.prototype;
    
    public class PrototypePattern {
    
        public static void main(String[] args) {
    
    
            System.out.println("==========start==========");
    
            Engineer juniorEngineer = new EngineerImpl();
            juniorEngineer.setDuty("   ");
            juniorEngineer.setEngineerName("  (  )");
            juniorEngineer.develop("easy program");
    
            System.out.println("=======================");
    
            Engineer seniorEngineer = (EngineerImpl)juniorEngineer.clone();
            seniorEngineer.setEngineerName("  (  )");
            seniorEngineer.develop("difficult program");
    
            System.out.println("==========end==========");
    
    
        }
    }
    
    

    출력 결과:
    ==========start==========
       :  (  ) develop easy program
    =======================
       :  (  ) develop difficult program
    ==========end==========
    

    좋은 웹페이지 즐겨찾기