Try using it in your preferred language.

English

  • English
  • 汉语
  • Español
  • Bahasa Indonesia
  • Português
  • Русский
  • 日本語
  • 한국어
  • Deutsch
  • Français
  • Italiano
  • Türkçe
  • Tiếng Việt
  • ไทย
  • Polski
  • Nederlands
  • हिन्दी
  • Magyar
translation

นี่คือโพสต์ที่แปลด้วย AI

제이온

[Effective Java] รายการ 4. ใช้ตัวสร้างส่วนตัวเพื่อป้องกันการสร้างอินสแตนซ์

เลือกภาษา

  • ไทย
  • English
  • 汉语
  • Español
  • Bahasa Indonesia
  • Português
  • Русский
  • 日本語
  • 한국어
  • Deutsch
  • Français
  • Italiano
  • Türkçe
  • Tiếng Việt
  • Polski
  • Nederlands
  • हिन्दी
  • Magyar

สรุปโดย AI ของ durumis

  • เมื่อสร้างคลาสยูทิลิตี้ที่มีเพียงเมธอดคงที่และฟิลด์ ควรสร้างตัวสร้างเป็นส่วนตัวเพื่อป้องกันการสร้างอินสแตนซ์
  • วิธีนี้จะช่วยป้องกันการเรียกใช้ตัวสร้างจากภายนอกคลาส และช่วยให้สามารถควบคุมตัวสร้างพื้นฐานสาธารณะที่คอมไพเลอร์สร้างขึ้นโดยอัตโนมัติได้อย่างชัดเจน
  • ตัวสร้างส่วนตัวจะทำให้ไม่สามารถสืบทอดได้ ดังนั้นจึงสามารถจำกัดการใช้งานที่ตั้งใจไว้ของคลาสยูทิลิตี้และเพิ่มความสามารถในการอ่านของรหัสได้

บางครั้งการใช้คลาสที่มีเฉพาะเมธอดแบบคงที่และฟิลด์แบบคงที่อาจมีประโยชน์


โดยทั่วไป คุณสามารถใช้คลาสยูทิลิตี้ เช่น java.lang.Math, java.util.Arrays ซึ่งรวบรวมเมธอดที่เกี่ยวข้องกับการคำนวณทางคณิตศาสตร์ หรืออาร์เรย์ คุณยังสามารถรวบรวมเมธอดแบบคงที่สำหรับการสร้างโรงงานสำหรับวัตถุที่ใช้ส่วนต่อประสานเฉพาะ เช่น java.util.Collections


คลาสยูทิลิตี้เหล่านี้สามารถใช้งานได้โดยไม่ต้องมีตัวแปรอินสแตนซ์หรือเมธอด ดังนั้นจึงไม่จำเป็นต้องมีคอนสตรักเตอร์ แต่ถ้าคุณไม่ได้ระบุ คอนสตรักเตอร์ คอมไพเลอร์จะสร้างคอนสตรักเตอร์เริ่มต้นแบบ public อัตโนมัติ ทำให้คุณไม่สามารถแยกแยะได้ว่าคอนสตรักเตอร์นี้สร้างขึ้น โดยอัตโนมัติ


เพื่อป้องกันปัญหานี้ บางครั้งเราจะสร้างเป็นคลาส abstract แต่คลาส abstract ไม่สามารถสร้างอินสแตนซ์ได้ เนื่องจากสามารถสร้าง คลาสย่อยและสร้างอินสแตนซ์ได้


public abstract class Person {

    public static void speak(String message) {
        System.out.println(message);
    }
}

public class Student extends Person {

    public Student() {
        super();
    }


ดังนั้นเพื่อป้องกันไม่ให้สร้างอินสแตนซ์ของคลาสยูทิลิตี้ คุณต้องตั้งค่าตัวควบคุมการเข้าถึงของคอนสตรักเตอร์เป็น private


public abstract class Person {

    private Person() {
        throw new AssertionError();
    }

    public static void speak(String message) {
        System.out.println(message);
    }


ถ้าตัวควบคุมการเข้าถึงของคอนสตรักเตอร์เริ่มต้นเป็น private จะไม่สามารถเข้าถึงได้จากภายนอกคลาส นอกจากนี้ยังบล็อกการเรียก คอนสตรักเตอร์เริ่มต้นภายในโดยการโยนข้อยกเว้น


คอนสตรักเตอร์แบบ private นี้อาจทำให้ผู้ใช้ไม่เข้าใจคอนสตรักเตอร์ ดังนั้นจึงเป็นการดีที่จะใส่ความคิดเห็น การบล็อกคอนสตรักเตอร์ ด้วย private จะมีผลต่อการทำให้การสืบทอดเป็นไปไม่ได้ด้วย


แหล่งที่มา

제이온
제이온
제이온
제이온
[Effective Java] รายการที่ 2. พิจารณาตัวสร้างหากมีพารามิเตอร์มากมาย เมื่อสร้างวัตถุที่มีพารามิเตอร์มากมาย การใช้รูปแบบตัวสร้างจะช่วยให้คุณเขียนโค้ดได้ชัดเจนและอ่านง่ายขึ้น สร้างวัตถุตัวสร้างด้วยพารามิเตอร์ที่จำเป็น และตั้งค่าพารามิเตอร์ทางเลือกด้วยเมธอด setter จากนั้นเรียกใช้เมธอด build() เพื่อทำให้วัตถุเสร็จสมบูรณ์ รูปแบ

27 เมษายน 2567

[Effective Java] รายการ 6. หลีกเลี่ยงการสร้างอ็อบเจ็กต์ที่ไม่จำเป็น คู่มือเกี่ยวกับวิธีลดการสร้างอ็อบเจ็กต์ที่ไม่จำเป็นใน Java อ็อบเจ็กต์แบบไม่เปลี่ยนแปลง เช่น String, Boolean ควรใช้ลิเทอรัล และควรแคชอินสแตนซ์ Pattern สำหรับนิพจน์ทั่วไป นอกจากนี้ การออโต้บอกซ์อาจทำให้ประสิทธิภาพลดลง ดังนั้นจึงควรใช้ประเภทพื้นฐาน รายละเอีย

28 เมษายน 2567

[Effective Java] รายการ 5: ใช้การฉีดการพึ่งพาแทนการระบุทรัพยากร หากคลาสพึ่งพาทรัพยากรภายนอก การใช้ซิงเกิลตันและคลาสยูทิลิตี้แบบคงที่ไม่ใช่ความคิดที่ดี การฉีดการพึ่งพาช่วยปรับปรุงความยืดหยุ่น การนำกลับมาใช้ใหม่และความสะดวกในการทดสอบของคลาส และการใช้รูปแบบวิธีการของโรงงานทำให้การฉีดการพึ่งพา มีประสิทธิภาพมากขึ้น

28 เมษายน 2567

วิธีที่ Rust ป้องกันบั๊กแบบพร้อมกัน Rust เป็นภาษาที่ทรงพลังในการแก้ปัญหาความท้าทายของการเขียนโปรแกรมแบบพร้อมกัน ระบบประเภทและแบบจำลองการเป็นเจ้าของทำให้การส่งผ่านและการแชร์ข้อมูลระหว่างเธรดปลอดภัย Mutex, Channel, Atomic และรูปแบบความแปรปรวนภายในอื่น ๆ ช่วยให้คุณกำหนดและใช้ตัวแปรที่แชร์ได้อย
곽경직
곽경직
곽경직
곽경직
곽경직

28 มีนาคม 2567

[Javascript] โครงสร้างของวัตถุ (V8) วัตถุของ JavaScript ในเครื่องยนต์ V8 ถูกแปลงเป็น Fast mode ที่ปรับให้เหมาะสมเหมือนโครงสร้างข้อมูลตามสถานะและ Dictionary mode ที่ทำงานเป็นแฮชแมป Fast mode เร็วเนื่องจากคีย์และค่าอยู่ในรูปแบบคงที่เกือบทั้งหมด แต่เมื่อมีการเพิ่มคีย์ใหม่หรือดำเนินการลบองค์ประ
곽경직
곽경직
곽경직
곽경직
곽경직

18 มีนาคม 2567

การสร้างแบบจำลองข้อมูลเชิงกายภาพ การสร้างแบบจำลองข้อมูลเชิงกายภาพคือกระบวนการออกแบบตารางฐานข้อมูลเชิงสัมพันธ์เพื่อให้สามารถใช้งานได้จริง โดยมีเป้าหมายเพื่อเพิ่มประสิทธิภาพ โดยการพิจารณาประสิทธิภาพในการใช้พื้นที่จัดเก็บ การแบ่งพาร์ติชันข้อมูล การออกแบบดัชนี เป็นต้น สามารถแก้ไขปัญหาประสิทธ
제이의 블로그
제이의 블로그
제이의 블로그
제이의 블로그
제이의 블로그

9 เมษายน 2567

การสร้างแบบจำลองข้อมูลเชิงแนวคิด การสร้างแบบจำลองข้อมูลเชิงแนวคิดเป็นกระบวนการแยกเอนทิตีและแสดงความสัมพันธ์ระหว่างเอนทิตีในรูปแบบ ERD เอนทิตีเป็นหน่วยข้อมูลอิสระ และแอตทริบิวต์คือข้อมูลที่เอนทิตีมี ตัวระบุคือสิ่งที่ระบุเอนทิตีเฉพาะและความสัมพันธ์แสดงถึงการโต้ตอบระหว่างเอนทิตี คาร์ดินัลลิ
제이의 블로그
제이의 블로그
제이의 블로그
제이의 블로그

8 เมษายน 2567

[Next.js] การฉีดรหัสรันไทม์ env เรียนรู้วิธีการตั้งค่าตัวแปรสภาพแวดล้อมหลังจากการสร้างใน Next.js คู่มือนี้จะแนะนำวิธีการติดตั้ง cross-env และแก้ไขสคริปต์เพื่อให้ผู้ใช้ Windows ทำตามได้ง่าย รวมถึงการใช้กับตัวแปรสภาพแวดล้อมที่หลากหลาย เช่น local, dev, qa, prod
Sunrabbit
Sunrabbit
Sunrabbit
Sunrabbit

20 มีนาคม 2567

JWT (JSON Web Token) คืออะไร? JSON Web Token (JWT) เป็นมาตรฐานเปิดสำหรับการส่งข้อมูลอย่างปลอดภัย โดยใช้โทเค็นที่ลงนามเพื่อรักษาความสมบูรณ์และความปลอดภัยของข้อมูล ส่วนหัวประกอบด้วยประเภทโทเค็นและอัลกอริทึมการลงนาม และเพย์โหลดประกอบด้วยข้อมูลผู้ใช้ที่ผู้พัฒนาต้องการ รวมอยู่ด้วย JWT ที่ล
Seize the day
Seize the day
Seize the day
Seize the day
Seize the day

4 มีนาคม 2567