Head First Design Patterns 독서 노트의 템플릿 모드

최근에 Django를 배우고 있기 때문에 템플릿이라는 개념에 대해 비교적 익숙하다.Django의 MTV 모델, 템플릿(Template)은 그 특색 중의 하나로서 우리는 비교해 볼 수 있다.
다음은 저의 기본 템플릿base입니다.html 파일
<span style="font-size:14px;"><!DOCTYPE html>
<html>
{% load staticfiles %}
<head lang="en">
    <meta charset="UTF-8">
    <title>{% block title %}{% endblock%}</title>
    {% block js_import %} {% endblock%}
    {% block css_import %} {% endblock%}
</head>
<body>
<div>
    <div>
        {% block head %}
        {% endblock %}

        <div class="body">
            <div class="left">
                {% block left %} {% endblock %}
             </div>
             <div class="middle">
                {% include "navigator.html" %}
                {% block middle %}{% endblock %}
             </div>
             {% block right %}
                <div class="right">
                </div>
             {% endblock %}
        </div>

        <div class="footer">
            {% block footer %}
               2013~2014 @copyright owned by xxx
            {% endblock %}
        </div>
    </div>
</div>

{% block footer_import_js %}{% endblock %}
{% block footer_js %}{% endblock %}
</body>
</html></span>

전체 파일은 템플릿 모드의 부류로 볼 수 있습니다. 일부 알고리즘 프레임워크 (즉 이곳의 {%block%}) 를 정의했고, 모든 {%block%} 세그먼트는 봉인된 구체적인 알고리즘입니다.
이러한 알고리즘은 부류에 의해 실현될 수도 있고, 부류에 의해 실현되는 것을 지연시킬 수도 있다.
예를 들어 여기 {%block footer%}는 부모 클래스가 구현한 스크립트입니다. 하위 템플릿은 이 스크립트를 계승해야 합니다.나머지는 {%block title%} {%block right%} 등
바로 하위 템플릿을 남겨서 구체적으로 실현하는 것이다. 이렇게 하면 하나의 구조, 규범이 생겼고 코드의 복용을 실현했으며 하위 클래스에 충분한 능동성을 주었다.
주의해야 할 것은 템플릿 모델에 갈고리(hook)의 개념이 있다는 것이다. 내가 보기에 이 hook은 평소에 작용하지 않는 (방법체는 비어있는) 방법이라고 할 수 있다. 만약에 필요하다면
쓰려면 자류에서 다시 쓸 수 있다.뜻밖의 작용을 하다.다음 예를 살펴보십시오.
4
public abstract class Parent{
 public void abstractBusiness()
 {
    collectData();//          
    dealWithData();//            
    beforeSaveData();// hook  1,    
    saveData();//           
    afterSaveData();// hook  2,    
 }
}
일반적인 상황에서 데이터를 수집하고 저장하는 공용 방법은 부류에 의해 실현되고 구체적인 업무 처리 방법은 부류에 의해 구체적으로 실현된다.그러면 지금 데이터를 저장해 달라고 하면...
이전에 데이터의 유효성을 검사해야 하기 때문에 BeforeSaveData() 방법이 유용합니다. 하위 클래스는 이 방법을 다시 쓰면 됩니다. 만약에 데이터를 저장한 후에 보내야 한다면
다른 인터페이스에 보내면 애프터 Save Data () 방법을 다시 쓰십시오.
이것이 바로 템플릿 방법으로 하나의 알고리즘 구조를 정의하고 자신이 실현하거나 하위 클래스에 의해 실현되는 알고리즘을 포함한다.코드의 복용을 보장하는 상황에서 상당한 탄력을 가지고 있어 확장하기 편리하다
및 유지 보수

좋은 웹페이지 즐겨찾기