Head First Design Patterns 독서 노트의 템플릿 모드
다음은 저의 기본 템플릿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 () 방법을 다시 쓰십시오.
이것이 바로 템플릿 방법으로 하나의 알고리즘 구조를 정의하고 자신이 실현하거나 하위 클래스에 의해 실현되는 알고리즘을 포함한다.코드의 복용을 보장하는 상황에서 상당한 탄력을 가지고 있어 확장하기 편리하다
및 유지 보수
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
CSS 열 🎨텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.