추상 공장 패턴 설명
1. 공장 방법 모델의 문제 : 공장 방법 모델에서 수업을 작성하려면 공장 수업을 통과해야합니다. 프로그램을 연장하려면 공장 수업을 수정해야합니다. 이것은 폐쇄 원칙을 위반하고 확장을 열고 수정을 위해 닫힙니다. 디자인에는 특정 문제가 있습니다.
2.이를 해결하는 방법 : 초록 공장 모델을 사용해야합니다. 즉, 기능 클래스 용 공장 클래스를 별도로 생성하여 이전 코드를 수정하고 기능을 확장 할 필요가 없습니다.
3. 공장 모델은 실제로 동일한 인터페이스를 구현하는 구현 클래스를 구현하는 통합 공장 메소드에 대한 통화를 만들고 있지만 JavaScript에는 인터페이스 번호가 없으므로이 구현 계층은 제거되지만 비트 기능 클래스의 멤버 및 메소드는 동일해야합니다.
초록 공장 소스 코드 예제
1. 이메일 보내기 클래스 :
코드 사본은 다음과 같습니다.
기능 mailsender () {
this.to = '';
this.title = '';
this.content = '';
}
mailsender.prototype.send = function () {
// 몸을 보내십시오
}
2. SMS 보내기 클래스 :
코드 사본은 다음과 같습니다.
함수 smssender () {
this.to = '';
this.title = '';
this.content = '';
}
smssender.prototype.send = function () {
// 몸을 보내십시오
}
3. 이것은 원래 공장 인터페이스 클래스이지만 여기에서 제거됩니다. 다양한 기능적 클래스 공장을 직접 작성합니다 .
1>. 우편 공장 카테고리 :
코드 사본은 다음과 같습니다.
함수 mailfactory () {
}
mailfactory.prototype.prodice = function () {
새 MailSender ()를 반환합니다.
}
2>. SMS 공장 카테고리 :
코드 사본은 다음과 같습니다.
함수 smsfactory () {
}
smsfactory.prototype.prodice = function () {
새로운 smssender ()를 반환합니다.
}
4. 사용 방법 :
코드 사본은 다음과 같습니다.
var factory = new MailFactory ();
var sender = factory.proctory ();
sender.to = 'toname#mail.com';
sender.title = '추상 공장 패턴';
sender.content = '내용 보내기';
sender.send ();
다른 지침
Java 및 .NET C# 사용 인터페이스와 같은 객체 지향 언어로 사용되는 공장 모드. 인터페이스는이 기능을 적용 할 방법과 사용자 가이 인터페이스를 사용하는 방법을 설명하는 다양한 외부 사용자에게 노출하는 방법을 사용할 수 있습니다. 물체는 실제 세계에서 약간의 추상화를 나타내는 클래스 형태로 표현됩니다. 아마도이 장면에는 전자 메일 보내기, SMS 보내기 및 쇼핑몰의 다양한 홍보 방법, 동물 세계의 다양한 조류와 짐승과 같은 많은 유사한 응용 프로그램이있을 것입니다.
사용자가 인터페이스 형태로 사용자의 사용을 제공하지 않으면 필연적으로 사용자에게 실제 기능 클래스 객체를 제공하며 사용자는 허용되지 않는 클래스 객체를 마음대로 수정하고 확장 할 수 있습니다.
공장 방법 모드와 추상 공장 모드는 이러한 문제를 잘 해결할 수 있습니다. 사용자는 인터페이스를 사용하여 공장 클래스를 호출하여 지정된 작업을 수행 할 수 있습니다. 추상 공장 모드는 확장 기능을 추가로 사용하고 기능 클래스 및 공장 클래스는 해당 인터페이스에서 각각의 클래스 수준 확장을 구현하며 다른 클래스 또는 방법을 수정하지 않습니다.