소개하다
생성 모드와 유사하게 객체 (공장에서 제품으로 간주)를 만들 때 객체를 만들기 위해 특정 클래스를 지정할 필요가 없습니다.
공장 패턴은 객체 생성을위한 인터페이스를 정의 하며이 인터페이스는 하위 클래스에 의해 결정되어 어떤 클래스를 인스턴스화합니다. 이 패턴은 클래스의 인스턴스화를 서브 클래스로 지연시킵니다. 서브 클래스는 인터페이스 메소드를 재정의하여 생성 할 때 자체 객체 유형을 지정할 수 있습니다.
이 모드는 특히 많은 설정 파일에 의존하는 등 객체에 대한 프로세스 할당을 작성할 때 매우 유용합니다. 또한 프로그램에 공장 메소드가 서브 클래스 클래스가 생성 해야하는 객체 유형을 정의하도록하는 경우가 많습니다.
텍스트
다음 예에서는 공장 방법을 사용하여 26 장에서 생성자 패턴 코드의 향상된 버전을 개선했습니다.
코드 사본은 다음과 같습니다.
var car = (function () {
var car = function (모델, 연도, 마일) {
this.model = 모델;
this.year = 년;
this.miles = 마일;
};
반환 기능 (모델, 연도, 마일) {
새 차를 반환합니다 (모델, 연도, 마일);
};
}) ();
var tom = 새 차 ( "Tom", 2009, 20000);
var dudu = 새 차 ( "Dudu", 2010, 5000);
이해하기 어려운 경우 또 다른 예를 들어 보겠습니다.
코드 사본은 다음과 같습니다.
var productManager = {};
ProductManager.createProduta = function () {
Console.log ( 'producta');
}
ProductManager.createProductb = function () {
Console.log ( 'productb');
}
ProductManager.Factory = function (typetype) {
신제품 관리자 [타이티 타입]를 반환합니다.
}
ProductManager.factory ( "CreateProduta");
우리가 아직 그것을 이해하지 못하면 더 자세히 설명합시다. 웹 페이지에 일부 요소를 삽입하려면 이러한 요소가 유형이 고정되어 있지 않으면 그림, 연결 또는 텍스트 일 수 있습니다. 공장 패턴의 정의에 따르면 공장 클래스와 해당 하위 클래스를 정의해야합니다. 먼저 서브 클래스의 특정 구현 (즉, 하위 기능)을 정의하겠습니다.
코드 사본은 다음과 같습니다.
var page = page || {};
page.dom = page.dom || {};
// 하위 기능 1 : 처리 텍스트
page.dom.text = function () {
this.insert = function (where) {
var txt = document.creatextNode (this.url);
AppendChild (txt);
};
};
// 하위 기능 2 : 처리 링크
page.dom.link = function () {
this.insert = function (where) {
var link = document.createelement ( 'a');
link.href = this.url;
link.appendChild (document.createtextNode (this.url));
AppendChild (링크);
};
};
// 하위 기능 3 : 그림 처리
page.dom.image = function () {
this.insert = function (where) {
var im = document.creeLement ( 'IMG');
im.src = this.url;
AppendChild (IM);
};
};
그렇다면 공장 처리 기능을 어떻게 정의합니까? 실제로는 매우 간단합니다.
코드 사본은 다음과 같습니다.
page.dom.factory = function (type) {
새 Page.dom [type]을 반환합니다.
}
사용 방법은 다음과 같습니다.
코드 사본은 다음과 같습니다.
var o = page.dom.factory ( 'link');
o.url = 'http://www.cnblogs.com';
O.Insert (Document.Body);
이 시점에서 나는 모든 사람들이 이미 공장 모델의 도입을 이해했다고 생각하므로 더 이상 설명하지 않을 것입니다.
요약
공장 모드를 사용하는시기
공장 모델은 다음 시나리오에서 특히 유용합니다.
1. 물체의 구성은 매우 복잡합니다
2. 다른 인스턴스를 만들려면 특정 환경에 의존해야합니다.
3. 동일한 속성을 가진 많은 수의 작은 물체를 처리합니다.
공장 모드를 사용해서는 안된 경우
공장 모델을 남용하지 마십시오. 때로는 코드에 불필요한 복잡성을 추가하고 테스트를 실행하기가 어렵습니다.