รูปแบบมัณฑนากรสามารถเพิ่มความสามารถให้กับวัตถุที่มีอยู่ได้แบบไดนามิก ด้านล่างนี้ ฉันจะใช้ตัวอย่างง่ายๆ เพื่อสาธิตวิธีการใช้รูปแบบมัณฑนากรในโปรแกรม
1. ลายมัณฑนากร
สมมติว่าคุณกำลังมองหาแฟนสาว มีเด็กผู้หญิงจำนวนมากจากประเทศต่างๆ เช่น สหรัฐอเมริกา จีน ญี่ปุ่น ฝรั่งเศส ฯลฯ แต่ละคนมีบุคลิกและความสนใจที่แตกต่างกัน หากคุณต้องการจำลองสถานการณ์ดังกล่าวในโปรแกรม ให้สมมติว่าเด็กผู้หญิงแต่ละคนมีบุคลิกและความสนใจที่แตกต่างกัน คลาส Java จะมีคลาสนับพันซึ่งจะทำให้คลาสขยายและความสามารถในการปรับขนาดของการออกแบบดังกล่าวจะค่อนข้างแย่ เพราะหากเราต้องการสาวใหม่ เราก็ต้องสร้างคลาส Java ใหม่ ซึ่งจริงๆ แล้วฝ่าฝืนหลักการ OCP (เปิดเพื่อขยาย ปิดเพื่อแก้ไข) ที่ต้องปฏิบัติตามในการพัฒนาโปรแกรม
มาสร้างดีไซน์อีกอย่างหนึ่งโดยที่แต่ละบุคลิกหรืองานอดิเรกกลายเป็นของตกแต่งที่สามารถเพิ่มเข้ากับรูปร่างของเด็กผู้หญิงแต่ละคนได้แบบไดนามิก
2. โครงสร้างไดอะแกรมคลาส
3. โค้ดตัวอย่างรูปแบบมัณฑนากร
Girl.java
คัดลอกรหัสรหัสดังต่อไปนี้:
คลาสนามธรรมสาธารณะ Girl {
คำอธิบายสตริง = "ไม่เจาะจง";
สตริงสาธารณะ getDescription(){
คำอธิบายการส่งคืน;
-
-
AmericanGirl.java
คัดลอกรหัสรหัสดังต่อไปนี้:
ชั้นเรียนสาธารณะ AmericanGirl ขยาย Girl {
สาธารณะAmericanGirl() {
คำอธิบาย = "+อเมริกัน";
-
-
EuropeanGirl.java
คัดลอกรหัสรหัสดังต่อไปนี้:
ชั้นเรียนสาธารณะ EuropeanGirl ขยาย Girl {
EuropeanGirl สาธารณะ () {
คำอธิบาย = "+ยุโรป";
-
-
GirlDecorator.java
คัดลอกรหัสรหัสดังต่อไปนี้:
GirlDecorator คลาสนามธรรมสาธารณะขยาย Girl {
สตริงนามธรรมสาธารณะ getDescription();
-
วิทยาศาสตร์.java
คัดลอกรหัสรหัสดังต่อไปนี้:
วิทยาศาสตร์ระดับสาธารณะขยาย GirlDecorator {
ส่วนตัว สาว สาว;
วิทยาศาสตร์สาธารณะ(หญิงสาว){
นี่สาว = ผู้หญิง;
-
@แทนที่
สตริงสาธารณะ getDescription() {
กลับ this.girl.getDescription() + "+เหมือนวิทยาศาสตร์";
-
โมฆะสาธารณะ caltulateStuff () {
System.out.println("การคำนวณทางวิทยาศาสตร์!");
-
-
Art.java
คัดลอกรหัสรหัสดังต่อไปนี้:
ศิลปะคลาสสาธารณะขยาย GirlDecorator {
ส่วนตัว สาว สาว;
ศิลปะสาธารณะ(สาวสาว){
นี่สาว = ผู้หญิง;
-
@แทนที่
สตริงสาธารณะ getDescription() {
กลับ this.girl.getDescription() + "+ชอบงานศิลปะ";
-
โมฆะสาธารณะวาด () {
System.out.println("วาดภาพ!");
-
-
Main.java
คัดลอกรหัสรหัสดังต่อไปนี้:
ชั้นเรียนสาธารณะหลัก {
โมฆะคงที่สาธารณะ main (String [] args) {
//สาวอเมริกันธรรมดาๆ
สาว g1 = AmericanGirl ใหม่ ();
System.out.println(g1.getDescription());
//ผู้ที่ชื่นชอบวิทยาศาสตร์
วิทยาศาสตร์ g2 = วิทยาศาสตร์ใหม่ (g1);
System.out.println(g2.getDescription());
//ผู้ที่ชื่นชอบงานศิลปะ
ศิลปะ g3 = ศิลปะใหม่ (g2);
System.out.println(g3.getDescription());
-
-
4. การประยุกต์ลวดลายมัณฑนากรใน JDK
IO ใน Java เป็นตัวอย่างทั่วไปที่สุดของการใช้รูปแบบมัณฑนากร
ต่อไปนี้เป็นตัวอย่างง่ายๆ ของการตกแต่งวัตถุ InputStreamReader ผ่านวัตถุ BufferedReader:
คัดลอกรหัสรหัสดังต่อไปนี้:
อินพุต BufferedReader = BufferedReader ใหม่ (InputStreamReader ใหม่ (System.in));
//System.in เป็นวัตถุ InputStream
(จบข้อความฉบับเต็ม)