1. โหมดโรงงานง่ายๆ
คำอธิบาย: มันคือการสร้างคลาสโรงงานซึ่งใช้การสร้างคลาสการใช้งานสำหรับอินเทอร์เฟซเดียวกัน
แต่ดูเหมือนว่า 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>. สร้างคลาสโรงงาน:
การคัดลอกรหัสมีดังนี้:
ฟังก์ชั่น sendfactory () {
this.sender = null;
-
sendfactory.prototype.produce = function (ประเภท) {
var me = this;
if (type == 'mail') {
me.sender = new mailsender ();
} อื่นถ้า (type == 'sms') {
me.sender = new smssender ();
-
กลับมาฉัน
-
4>. ใช้คลาสโรงงานนี้:
การคัดลอกรหัสมีดังนี้:
Var Factory = new SendFactory ();
var sender = factory.produce ('mail'); // SMS
sender.to = 'toname#mail.com';
sender.title = 'ชื่อทดสอบจดหมาย!';
Sender.Content = 'ส่งเนื้อหา';
Sender.Send ();
2. โหมดวิธีโรงงานหลายวิธี
หมายเหตุ: วิธีการโหมดโรงงานหลายวิธีเป็นการปรับปรุงวิธีการทำโรงงานทั่วไปเนื่องจากการใช้งานการส่งคืนจะขึ้นอยู่กับอักขระที่ผ่าน เมื่ออินพุตอักขระไม่ถูกต้องอาจไม่ได้ประมวลผลหรือประมวลผลเป็นข้อผิดพลาด ในขณะที่วิธีการหลายโหมดโรงงานสามารถหลีกเลี่ยงข้อผิดพลาดดังกล่าวได้
เราได้ทำการปรับปรุงคลาสโรงงานข้างต้น:
การคัดลอกรหัสมีดังนี้:
ฟังก์ชั่น sendfactory () {
this.sender = null;
-
sendfactory.prototype.producemail = function () {
var me = this;
me.sender = new mailsender ();
กลับมาฉัน
-
sendfactory.prototype.producesms = function () {
var me = this;
me.sender = new smssender ();
กลับมาฉัน
-
วิธีใช้:
การคัดลอกรหัสมีดังนี้:
Var Factory = new SendFactory ();
var sender = factory.producesms (); // Producimail
sender.to = 'toname#xxxxx';
sender.title = 'ชื่อวิธีการส่ง SMS';
Sender.Content = 'ส่งเนื้อหา';
Sender.Send ();
3. โหมดวิธีการแบบคงที่จากโรงงาน
หมายเหตุ: เปลี่ยนวิธีการโหมดวิธีโรงงานหลายวิธีด้านบนเป็นการระบุตัวตนแบบคงที่เพื่อไม่จำเป็นต้องสร้างอินสแตนซ์ SendFactory;
แก้ไขรหัสโรงงานดังนี้:
การคัดลอกรหัสมีดังนี้:
var sendFactory = {
Productail: function () {
ส่งคืน mailsender ใหม่ ();
-
ผลิต: function () {
คืน SMSSENDER ใหม่ ();
-
-
วิธีใช้:
การคัดลอกรหัสมีดังนี้:
var sender = sendfactory.producemail ();
sender.to = 'toname#mail.com';
Sender.Title = 'Mail Send Title';
Sender.Content = 'ส่งเนื้อหา';
Sender.Send ();
คำอธิบายแบบจำลองวิธีโรงงาน
ในคำอธิบายการเขียนโปรแกรมการคิดเชิงวัตถุเมื่อมีผลิตภัณฑ์จำนวนมาก (แบบจำลองโลกจริงชื่อ: ชื่อคลาสคุณลักษณะสมาชิกและวิธีการใช้งาน ฯลฯ ) ที่จำเป็นต้องเริ่มต้นนั่นคือผลิตภัณฑ์จะต้องสร้างและ [เมื่อใช้อินเทอร์เฟซเดียวกัน] โหมดแรกมีความเป็นไปได้ของข้อผิดพลาดประเภทอินพุตและโหมดที่สองเมื่อจำเป็นต้องสร้างอินสแตนซ์ของโรงงาน