รูปแบบของมัณฑนากรอนุญาตให้เพิ่มฟังก์ชั่นใหม่ลงในวัตถุที่มีอยู่โดยไม่ต้องเปลี่ยนโครงสร้าง รูปแบบการออกแบบประเภทนี้เป็นของรูปแบบโครงสร้างซึ่งเป็นแพ็คเกจของคลาสที่มีอยู่
รูปแบบนี้สร้างคลาสการตกแต่งเพื่อห่อคลาสดั้งเดิมและให้ฟังก์ชั่นเพิ่มเติมในขณะที่ยังคงความสมบูรณ์ของลายเซ็นวิธีการคลาส
เราแสดงให้เห็นถึงการใช้โหมดมัณฑนากรผ่านตัวอย่างต่อไปนี้ ในหมู่พวกเขาเราจะตกแต่งรูปร่างที่มีสีต่างกันโดยไม่ต้องเปลี่ยนคลาสรูปร่าง
ทำให้สำเร็จ
เราจะสร้างอินเทอร์เฟซรูปร่างและคลาสเอนทิตีที่ใช้อินเทอร์เฟซรูปร่าง จากนั้นเราจะสร้างตัวเลือกตัวละครแบบนามธรรมที่ใช้อินเตอร์เฟสรูปร่างและใช้วัตถุรูปร่างเป็นตัวแปรอินสแตนซ์
Redshapedecorator เป็นคลาสเอนทิตีที่ใช้ตัวจัดตำแหน่ง
Decoratorpatterndemo คลาสสาธิตของเราใช้ Redshapedecorator เพื่อตกแต่งวัตถุรูปร่าง
ขั้นตอนที่ 1
สร้างอินเทอร์เฟซ
shape.java
รูปร่างอินเตอร์เฟสสาธารณะ {void draw ();}ขั้นตอนที่ 2
สร้างคลาสเอนทิตีที่ใช้อินเทอร์เฟซ
สี่เหลี่ยมผืนผ้า. java
รูปสี่เหลี่ยมผืนผ้าระดับสาธารณะใช้รูปร่าง {@Override โมฆะสาธารณะ Draw () {System.out.println ("รูปร่าง: สี่เหลี่ยมผืนผ้า"); }} circle.javapublic circle ใช้รูปร่าง {@Override โมฆะสาธารณะวาด () {system.out.println ("รูปร่าง: วงกลม"); -ขั้นตอนที่ 3
สร้างคลาสการตกแต่งแบบนามธรรมที่ใช้อินเทอร์เฟซรูปร่าง
Shapedecorator.java
บทคัดย่อระดับสาธารณะคลาส Shapedecorator ใช้รูปร่าง {รูปร่างที่ได้รับการป้องกันการตกแต่ง Shape; Public Shapedecorator (Shape DecoratedShape) {this.decoratedShape = DecoratedShape; } โมฆะสาธารณะ Draw () {DecoratedShape.Draw (); -ขั้นตอนที่ 4
สร้างคลาสการตกแต่งเอนทิตีที่ยื่นออกมาจากคลาส Shapedecorator
redshapedecorator.java
Public Class Redshapedecorator ขยายตัว Shapedecorator {Public Redshapedecorator (รูปทรงตกแต่ง Shape) {Super (DecoratedShape); } @Override โมฆะสาธารณะ Draw () {DecoratedShape.draw (); SetredBorder (DecoratedShape); } โมฆะส่วนตัว setredBorder (รูปร่างตกแต่ง shape) {system.out.println ("สีขอบ: สีแดง"); -ขั้นตอนที่ 5
ใช้ Redshapedecorator เพื่อตกแต่งวัตถุรูปร่าง
Decoratorpatterndemo.java
Public Class Decoratorpatterndemo {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {รูปร่างวงกลม = วงกลมใหม่ (); รูปร่าง redcircle = new redshapedecorator (วงกลมใหม่ ()); รูปร่าง redRectangle = ใหม่ redshapedecorator (สี่เหลี่ยมใหม่ ()); System.out.println ("วงกลมที่มีเส้นขอบปกติ"); circle.draw (); System.out.println ("/ncircle ของเส้นขอบสีแดง"); redcircle.draw (); System.out.println ("/nrectangle ของขอบสีแดง"); redrectangle.draw (); -ขั้นตอนที่ 6
ตรวจสอบผลลัพธ์
วงกลมที่มีเส้นขอบปกติ: วงกลมวงกลมของเส้นขอบสีแดง: CircleBorder สี: redrectangle ของเส้นขอบสีแดง: สี rectangleBorder: สีแดง
ขอบคุณสำหรับการอ่านฉันหวังว่ามันจะช่วยคุณได้ ขอบคุณสำหรับการสนับสนุนเว็บไซต์นี้!