คำจำกัดความของโหมดอะแดปเตอร์: ใช้สองคลาสที่เข้ากันไม่ได้เข้าด้วยกันซึ่งเป็นของโหมดโครงสร้างและต้องใช้สองตัวตน: Adaptee (อะแดปเตอร์) และอะแดปเตอร์ (อะแดปเตอร์)
ทำไมต้องใช้โหมดอะแดปเตอร์
เรามักจะพบคลาสที่ไม่เกี่ยวข้องสองคลาสที่ต้องรวมกัน จะทำอย่างไร?
การใช้อะแดปเตอร์สร้างอินเตอร์เฟสไฮบริด (ไฮบริด) ระหว่างอินเตอร์เฟสทั้งสองนี้
วิธีใช้โหมดอะแดปเตอร์
ในการใช้วิธีการอะแดปเตอร์ได้รับการกล่าวถึงในส่วน "การฟื้นฟูชั้นเรียน" ของ "Think in Java" มีสองวิธี: องค์ประกอบและมรดก
สมมติว่าเราต้องการขับเสาเข็มมีสองประเภท: กองสี่เหลี่ยมและกองวงกลม
การคัดลอกรหัสมีดังนี้:
ชั้นเรียนสาธารณะ squarepeg {
การแทรกโมฆะสาธารณะ (String Str) {
System.out.println ("squarepeg insert ():"+str);
-
-
Roundpeg ชั้นเรียนสาธารณะ {
โมฆะสาธารณะ insertintohole (สตริงผงชูรส) {
System.out.println ("Roundpeg insertintohole ():"+msg);
-
-
ขณะนี้มีแอปพลิเคชันที่ต้องใช้ทั้งกองสี่เหลี่ยมและกองวงกลม จากนั้นเราจำเป็นต้องใช้คลาสที่ไม่เกี่ยวข้องทั้งสองนี้อย่างครอบคลุม
การคัดลอกรหัสมีดังนี้:
Pegadapter ชั้นเรียนสาธารณะขยาย squarepeg {
Roundpeg Roundpeg ส่วนตัว;
PEGADAPTER สาธารณะ (RoundPeg PEG) (this.RoundPeg = PEG;)
การแทรกโมฆะสาธารณะ (String Str) {RoundPeg.insertintohole (STR);}
-
ในรหัสข้างต้น RoundPeg เป็นของ Adaptee และเป็นอะแดปเตอร์ Pegadapter เป็นอะแดปเตอร์ปรับตัวปรับตัว (อะแดปเตอร์ Roundpeg) และเป้าหมาย (Target Squarepeg) ในความเป็นจริงนี่เป็นแอปพลิเคชันที่ครอบคลุมของการจัดองค์ประกอบและวิธีการสืบทอด
Pegadapter เป็นครั้งแรกที่สืบทอด squarepeg จากนั้นใช้การรวมกันของใหม่เพื่อสร้างวิธีการวัตถุสร้างวัตถุ RoundPeg ของ RoundPeg จากนั้นโอเวอร์โหลดเมธอดคลาสแม่แบบแทรก () จากที่นี่คุณยังเข้าใจถึงความแตกต่างระหว่างการใช้ใหม่เพื่อสร้างวัตถุและการใช้การสืบทอดการสืบทอดเพื่อสร้างวัตถุ
หากคุณมีประสบการณ์ในการใช้ Java คุณพบว่ารูปแบบนี้มักจะใช้
ใช้เพิ่มเติม
Pegadapter ด้านบนสืบทอด Squarepeg
การคัดลอกรหัสมีดังนี้:
อินเทอร์เฟซสาธารณะ iroundpeg {
ช่องว่างสาธารณะ insertintohole (สตริงผงชูรส);
-
อินเทอร์เฟซสาธารณะ isquarepeg {
การแทรกโมฆะสาธารณะ (String Str);
-
ด้านล่างนี้เป็น RoundPeg และ Squarepeg ใหม่
การคัดลอกรหัสมีดังนี้:
ชั้นเรียนสาธารณะ Squarepeg ใช้ isquarepeg {
การแทรกโมฆะสาธารณะ (String Str) {
System.out.println ("squarepeg insert ():"+str);
-
-
RoundPeg คลาสสาธารณะใช้ iroundPeg {
โมฆะสาธารณะ insertintohole (สตริงผงชูรส) {
System.out.println ("Roundpeg insertintohole ():"+msg);
-
-
นี่คือ Pegadapter ใหม่ที่เรียกว่าอะแดปเตอร์สองทาง:
การคัดลอกรหัสมีดังนี้:
PEGADAPTER ชั้นเรียนสาธารณะใช้ IROUNDPEG, ISQUAREPEG {
Roundpeg Roundpeg ส่วนตัว;
Squarepeg ส่วนตัว Squarepeg;
// วิธีการสร้าง
pegadapter สาธารณะ (Roundpeg PEG) {this.roundpeg = peg;}
// วิธีการสร้าง
Pegadapter สาธารณะ (Squarepeg Peg) (this.squarepeg = peg;)
การแทรกโมฆะสาธารณะ (String Str) {RoundPeg.insertintohole (STR);}
-
นอกจากนี้ยังมีประเภทที่เรียกว่าอะแดปเตอร์ที่สามารถทำได้ซึ่งสามารถรับอะแดปเตอร์หนึ่งในหลาย ๆ อะแดปเตอร์ได้ การใช้เทคโนโลยีการสะท้อนกลับคุณสามารถค้นพบวิธีการสาธารณะในชั้นเรียนแบบไดนามิก