javascript 디자인 모델 C 단일 모델 원리 와 응용 사례 분석
소개:단일 모델 은 구조 가 가장 간단 한 디자인 모델 이다.단일 모드 는 소프트웨어 시스템 에서 유일한 대상 을 만 드 는 데 사용 되 며 간단 하지만 실 용적 인 디자인 모델 이다.
정의:특정한 클래스 가 하나의 인 스 턴 스 만 있 는 지 확인 하고 자체 적 으로 예화 되 어 전체 시스템 에 이 인 스 턴 스 를 제공 합 니 다.이 종 류 는 하나의 예 류 라 고 부 르 며 전체 방문 방법 을 제공 합 니 다.단일 모드 는 대상 생 성 모드 입 니 다.
장면:일상적인 인 코딩 에는 다시 사용 해 야 할 장면 이 많 습 니 다.예 를 들 어 팝 업 창,키보드 입력 등 공공 구성 요 소 를 입력 합 니 다.우 리 는 한 번 만 만 들 고 두 번 째 사용 할 때 반복 적 으로 사용 하기 전에 만 든 인 스 턴 스 를 만 들 기 를 바 랍 니 다.자원 을 절약 하고 성능 을 향상 시 키 기 위해 서 는 사례 대상 의 유일 성 을 확보 해 야 단일 모델 로 이 루어 질 수 있다.단일 모드 를 사용 하려 면 주의해 야 합 니 다.1.특정한 종 류 는 하나의 인 스 턴 스 만 있 을 수 있 습 니 다.2.이 인 스 턴 스 를 스스로 만들어 야 합 니 다.3.전체 시스템 에 이 인 스 턴 스 를 스스로 제공 해 야 합 니 다.
예시:
단리 모델 은 두 가지 가 있 는데 굶 주 린 사람 모델 의 사례 와 게으름뱅이 모델 의 사례 가 있다.우 리 는 차 이 를 비교 해 보 자.
// demo
// : , getInstance init 。
var Singleton = (function () {
var instantiated;
function init(){
return {
sayHello: function () {
console.log('hello');
}
};
}
return {
getInstance: function () {
if(!instantiated){
instantiated = init();
}
return instantiated;
}
}
})();
// getInstance :
var instance = Singleton.getInstance();
var instance2 = Singleton.getInstance();
instance.sayHello(); //hello
instance2.sayHello(); //hello
console.log(instance === instance2); //true
// demo
// : getInstance 。
var Singleton = (function () {
var instantiated = init(); // instantiated
function init(){
return {
sayHello: function () {
console.log('hello');
}
};
}
return {
getInstance: function () {
return instantiated;
}
}
})();
var instance = Singleton.getInstance();
var instance2 = Singleton.getInstance();
instance.sayHello(); //hello
instance2.sayHello(); //hello
console.log(instance === instance2); //true
이상 demo 는 한 가지 문 제 를 생각 합 니 다.만약 init 함수 가 시간 을 소모 하 는 작업 이 라면 각 클래스 에 하나의 인 스 턴 스 만 있 을 수 있 습 니까?다 중 스 레 드 장면 에서 init 함수 가 실행 되 는 과정 에서 getInstance 를 다시 터치 합 니 다.하나의 클래스 에 여러 개의 실례 가 존재 하 게 될 것 이다.자 바스 크 립 트 에 이런 문제 가 생 길 까요?
두 가지 사례 모델 을 비교 해 보면 장단 점 이 있다.굶 주 린 남자 모델 은 처음부터 예화 되 었 고 자원 의 합 리 적 인 이용 에 있어 바람 이 떨 어 졌 다.게으름뱅이 모델 은 다 중 스 레 드 상황 에서 초기 화가 가 져 온 영향 을 고려 해 야 한다.
단일 모드 요약:
장점:
*인 스 턴 스 접근 을 엄 격 히 제어
*시스템 성능 을 절약 하고 폐기 대상 을 중복 생 성하 지 않 으 며 자원 낭 비 를 피한다
단점:
*단일 모드 의 확장 은 클래스 주 체 를 수정 해 야 합 니 다.이것 은 앞에서 소개 한 스위치 원칙 과 충돌 합 니 다.
*단일 모델 의 직책 이 너무 무 겁 고 어느 정도 에 단일 직책 원칙 에 위배 된다.단일 사례 는 업무 방법 도 제공 하고 대상 을 만 드 는 방법 도 제공 하 며 일정한 기능 결합 이 있 기 때문이다.
적용 필드:
*시스템 은 하나의 인 스 턴 스 대상 만 필요 합 니 다.
*클 라 이언 트 호출 클래스 의 단일 인 스 턴 스 는 하나의 공공 방문 점 만 사용 할 수 있 습 니 다.이 공공 방문 점 을 제외 하고 다른 경 로 를 통 해 이 인 스 턴 스 를 방문 할 수 없습니다.
관심 있 는 친 구 는 온라인 HTML/CSS/JavaScript 코드 실행 도 구 를 사용 할 수 있 습 니 다.http://tools.jb51.net/code/HtmlJsRun상기 코드 실행 효 과 를 테스트 할 수 있 습 니 다.
자 바스 크 립 트 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있 습 니 다.,,,,,javascript 대상 입문 강좌,JavaScript 오류 및 디 버 깅 기술 요약,JavaScript 데이터 구조 와 알고리즘 기술 총화과JavaScript 스 트 리밍 알고리즘 및 기술 총화.
본 고 에서 말 한 것 이 여러분 의 자 바스 크 립 트 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Thymeleaf 의 일반 양식 제출 과 AJAX 제출텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.