คอนสตรักเตอร์แบบ factory และ const
แคช คืนชนิดย่อย หรือสร้างออบเจ็กต์ขณะคอมไพล์
คอนสตรักเตอร์แบบ factory และ const เป็นบทเรียน Dart Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Dart Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Dart Academy มีบทเรียนทั้งหมด 4 บทเรียน
ตัวสร้างแบบโรงงานคืออะไร
ตัวสร้างแบบโรงงานดูเหมือนตัวสร้างทั่วไป แต่คุณควบคุมสิ่งที่ตัวสร้างจะคืนค่าได้ จึงไม่จำเป็นต้องสร้างออบเจ็กต์ใหม่ทุกครั้ง
class Logger {
factory Logger() => _shared;
}ตัวสร้างแบบโรงงานสามารถคืนออบเจ็กต์ที่เก็บไว้ในแคช
เนื่องจากตัวสร้างแบบโรงงานคืนค่าแทนที่จะสร้างออบเจ็กต์ใหม่เสมอ จึงสามารถส่งคืนอินสแตนซ์ที่เก็บไว้ในแคชได้ เหมาะสำหรับออบเจ็กต์เดี่ยวหรือกลุ่มออบเจ็กต์
class Logger {
static final _it = Logger._();
Logger._();
factory Logger() => _it;
}ตัวสร้างแบบโรงงานสามารถคืนชนิดย่อย
ตัวสร้างแบบโรงงานสามารถคืนออบเจ็กต์ใดก็ได้ที่มีชนิดถูกต้อง รวมถึงคลาสย่อย ทำให้คุณเลือกคลาสรูปธรรมได้ขณะโปรแกรมทำงาน
factory Shape(String k) =>
k == "box" ? Box() : Dot();ตัวสร้างแบบโรงงานต้องคืนค่า
ต่างจากตัวสร้างทั่วไป ตัวสร้างแบบโรงงานมีส่วนเนื้อหาที่ต้องคืนค่าเป็นอินสแตนซ์ และไม่กำหนดฟิลด์ด้วย this. โดยตรง
factory User.fromJson(Map j) {
return User(j["name"]);
}ตัวสร้างแบบโรงงานสำหรับการแยกวิเคราะห์ที่ใช้บ่อย
รูปแบบตัวสร้างแบบโรงงานเหมาะอย่างยิ่งสำหรับการแยกวิเคราะห์ เช่น การสร้างออบเจ็กต์จากแผนที่ รูปแบบ fromJsonพบได้ทั่วไปใน Dart และ Flutter
factory User.fromJson(Map<String, dynamic> j) =>
User(j["name"]);ตัวสร้าง const คืออะไร
ตัวสร้างค่าคงที่ช่วยให้คุณสร้างออบเจ็กต์ค่าคงที่ที่กำหนดขณะคอมไพล์ โดยฟิลด์ทั้งหมดเป็นค่าคงที่และทราบค่าล่วงหน้า
class Point {
final int x, y;
const Point(this.x, this.y);
}การสร้างอินสแตนซ์ค่าคงที่
เรียกใช้ตัวสร้างพร้อมคีย์เวิร์ด const เพื่อสร้างออบเจ็กต์ที่ไม่เปลี่ยนแปลง ออบเจ็กต์ค่าคงที่สองตัวที่มีค่าเท่ากันจะเป็นอินสแตนซ์เดียวกันอย่างแท้จริง
const a = Point(1, 2);
const b = Point(1, 2);
print(identical(a, b)); // trueกฎของตัวสร้าง const
ทุกฟิลด์ต้องเป็นค่าคงที่ และส่วนเนื้อหาของตัวสร้างต้องว่างเปล่า กฎเหล่านี้ทำให้ Dart สามารถทำให้ออบเจ็กต์คงที่ขณะคอมไพล์
class Color {
final int v;
const Color(this.v);
}const ช่วยประหยัดหน่วยความจำ
ออบเจ็กต์ const ที่เหมือนกันจะถูกทำให้เป็นค่าเดียวร่วมกันเป็นอินสแตนซ์เดียว จึงไม่ใช้หน่วยความจำเพิ่มเติมเมื่อใช้ออบเจ็กต์เดิมซ้ำ
const reds = [Color(255), Color(255)];ตัวสร้างแบบโรงงานเทียบกับ const โดยสรุป
เลือกใช้ตัวสร้างแบบโรงงานเมื่อคุณต้องตัดสินใจว่าจะคืนค่าใดขณะโปรแกรมทำงาน และเลือกใช้ const เมื่อคุณต้องการค่าที่ไม่เปลี่ยนแปลงและกำหนดได้ขณะคอมไพล์
การรวมแนวคิดต่าง ๆ
คลาสหนึ่งสามารถมีตัวสร้างทั่วไป ตัวสร้างแบบโรงงานสำหรับการแยกวิเคราะห์ และตัวสร้าง const สำหรับค่าคงที่ เพื่อรองรับความต้องการด้านการสร้างทุกรูปแบบ
ตรวจสอบความเข้าใจอย่างรวดเร็ว
ตรวจสอบความเข้าใจเกี่ยวกับตัวสร้างแบบโรงงาน
ทบทวน: ตัวสร้างแบบโรงงานและ const
คุณได้เรียนรู้ว่าตัวสร้างแบบโรงงานควบคุมสิ่งที่ตนคืนค่า ขณะที่ตัวสร้าง const สร้างออบเจ็กต์ที่ไม่เปลี่ยนแปลงและใช้ร่วมกันได้ตั้งแต่ขณะคอมไพล์ ทำได้ดีมาก! 🎉
คำถามที่พบบ่อย
บทเรียน “คอนสตรักเตอร์แบบ factory และ const” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “คอนสตรักเตอร์แบบ factory และ const” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Dart Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Dart Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “คอนสตรักเตอร์แบบ factory และ const”
แคช คืนชนิดย่อย หรือสร้างออบเจ็กต์ขณะคอมไพล์ คุณปฏิบัติ Dart Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Dart Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Dart Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “คอนสตรักเตอร์แบบ factory และ const” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Dart Academy นี้ได้ไหม
ได้ บทเรียน Dart Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- คอนสตรักเตอร์ค่าเริ่มต้นและแบบรับพารามิเตอร์
- คอนสตรักเตอร์แบบมีชื่อเพื่อสื่อเจตนาอย่างชัดเจน
- ลิสต์กำหนดค่าเริ่มต้นและการส่งต่อ
- คอนสตรักเตอร์แบบ factory และ const