Latest web development tutorials
×

设计模式 หลักสูตร

รูปแบบการออกแบบ รู้เบื้องต้นเกี่ยวกับรูปแบบการออกแบบ โหมดโรงงาน แบบโรงงานย่อ รูปแบบเดี่ยว รุ่นสร้าง รุ่นต้นแบบ อะแดปเตอร์รุ่น สะพานโหมด รูปแบบตัวกรอง โหมดการทำงานร่วมกัน มัณฑนากร รูปแบบซุ้ม ฟลายเวท โหมดพร็อกซี่ ห่วงโซ่ของรูปแบบความรับผิดชอบ โหมดคำสั่ง รูปแบบล่าม โหมดซ้ำแล้วซ้ำอีก รูปแบบที่เป็นสื่อกลาง รูปแบบของที่ระลึก รูปแบบการสังเกตการณ์ รูปแบบของรัฐ null Object Model โหมดกลยุทธ์ โหมดแม่แบบ รูปแบบของผู้เข้าชม MVC โหมด โหมดตัวแทน โหมดนิติบุคคลองค์ประกอบ รูปแบบการเข้าถึงข้อมูลของวัตถุ รูปแบบการควบคุมด้านหน้า intercepting รูปแบบตัวกรอง รูปแบบการบริการผู้แทนจำหน่าย วัตถุ Transfer รุ่น

设计模式其他

ทรัพยากรโหมดออกแบบ

รูปแบบของรัฐ

ในโหมดรัฐ (แบบรัฐ) พฤติกรรมของชั้นจะขึ้นอยู่กับสถานะของการเปลี่ยนแปลง ประเภทของรูปแบบการออกแบบนี้เป็นรูปแบบพฤติกรรม

ในรูปแบบของรัฐที่เราสร้างวัตถุและความหลากหลายของรัฐพฤติกรรมพร้อมกับสถานะของการเป็นตัวแทนบริบทการเปลี่ยนแปลงวัตถุวัตถุเปลี่ยนแปลง

การแนะนำ

เจตนา: ช่วยให้วัตถุที่จะเปลี่ยนพฤติกรรมในรัฐภายในมีการเปลี่ยนแปลงวัตถุที่ปรากฏในการปรับเปลี่ยนระดับนี้

ส่วนใหญ่จะแก้พฤติกรรมของวัตถุขึ้นอยู่กับรัฐ (คุณลักษณะ) ของตนและคุณสามารถเปลี่ยนได้ตามรัฐที่เกี่ยวข้องกับการเปลี่ยนแปลงพฤติกรรมของมัน

เมื่อจะใช้: รหัสที่มีจำนวนมากของวัตถุที่เกี่ยวข้องกับสถานะของงบเงื่อนไข

วิธีการแก้ไข: สถานะของการเรียนเฉพาะนามธรรมออก

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

ตัวอย่างการใช้งาน: 1, เล่นบาสเกตบอลเล่นสามารถมีสภาพปกติไม่สภาวะปกติและสภาวะผิดปกติ2 มาร์ควิสยี่ของระฆัง Zeng ที่ 'นาฬิกาเป็นอินเตอร์เฟซที่เป็นนามธรรม', 'นาฬิกา' และรัฐอื่น ๆ เฉพาะสภาพแวดล้อมเฉพาะ 'Bianzhong (Context)

ข้อดี: 1, ความสุนทรีย์กฎการเปลี่ยนแปลง2 ระบุรัฐเป็นไปได้ก่อนที่รัฐแจงนับต้องมีการตรวจสอบสถานะของสายพันธุ์ 3 ทั้งหมดที่มีลักษณะการทำงานของรัฐที่เกี่ยวข้องกับการเข้าชั้นเรียนและคุณสามารถเพิ่มรัฐใหม่จะต้องเปลี่ยนสถานะของวัตถุสามารถเปลี่ยนพฤติกรรมของวัตถุ 4 ช่วยให้รัฐรัฐตรรกะการเปลี่ยนแปลงของวัตถุในหนึ่งมากกว่าหนึ่งช่วงตึกใหญ่ของงบเงื่อนไข 5 ช่วยให้วัตถุหลายแบ่งปันสภาพแวดล้อมวัตถุรัฐซึ่งจะช่วยลดจำนวนของวัตถุในระบบ

ข้อเสีย: 1, รูปแบบของรัฐในการใช้ที่ถูกผูกไว้ที่จะเพิ่มจำนวนของชั้นเรียนของระบบและวัตถุ2 โครงสร้างและรูปแบบการดำเนินงานของรัฐที่มีความซับซ้อนมากขึ้นถ้าใช้ไม่ถูกต้องอาจทำให้เกิดโครงสร้างโปรแกรมสับสนและรหัส 3, การสนับสนุนสำหรับรัฐรูปแบบ "เปิดปิดหลักการ" ไม่ได้เป็นสิ่งที่ดีมากที่คุณสามารถเปลี่ยนสถานะของรูปแบบรัฐเพิ่มคลาสใหม่จำเป็นต้องปรับเปลี่ยนสถานะของผู้ที่รับผิดชอบในการเปลี่ยนสถานะของรหัสที่มาหรือไม่สามารถสลับไปยังรัฐใหม่และปรับเปลี่ยน ชั้นการกระทำของรัฐยังจำเป็นต้องปรับเปลี่ยนรหัสแหล่งที่มาของระดับที่สอดคล้องกัน

สถานการณ์การใช้งาน: 1 กับพฤติกรรมที่เปลี่ยนสถานะและการเปลี่ยนแปลงของฉาก2 สาขาเงื่อนไขคำสั่งแทน

หมายเหตุ: เมื่อใช้พฤติกรรมรัฐ จำกัด โดยโหมดของรัฐและรัฐจะไม่เกินห้า

การสำนึก

เราจะสร้างอินเตอร์เฟซสถานะนิติบุคคลและการดำเนินการของรัฐอินเตอร์เฟซชั้นเรียนบริบทเป็นชั้นที่มีรัฐบางอย่าง

StatePatternDemo เราแสดงให้เห็นถึงการใช้งานของการเรียนและสถานะบริบทบริบทวัตถุที่จะแสดงให้เห็นถึงการเปลี่ยนแปลงพฤติกรรมในสถานะของการเปลี่ยนแปลง

รัฐรูปแบบแผนภาพ UML

ขั้นตอนที่ 1

สร้างอินเตอร์เฟซ

State.java

public interface State {
   public void doAction(Context context);
}

ขั้นตอนที่ 2

สร้างคลาสนิติบุคคลที่ใช้อินเตอร์เฟซ

StartState.java

เรียนสาธารณะ StartState ดำเนิน {รัฐ

   โมฆะสาธารณะ doAction (บริบทบริบท) {
      System.out.println ( "ผู้เล่นอยู่ในสถานะเริ่มต้น");
      context.setState (นี้);	
   }

   สาธารณะ String toString () {
      กลับ "Start รัฐ";
   }
}

StopState.java

public class StopState implements State {

   public void doAction(Context context) {
      System.out.println("Player is in stop state");
      context.setState(this);	
   }

   public String toString(){
      return "Stop State";
   }
}

ขั้นตอนที่ 3

สร้างคลาสบริบท

Context.java

บริบทระดับสาธารณะ {
   รัฐรัฐเอกชน

   บริบทสาธารณะ () {
      รัฐ = null;
   }

   โมฆะสาธารณะ setState (รัฐรัฐ) {
      this.state = รัฐ		
   }

   สาธารณะรัฐ getState () {
      กลับรัฐ
   }
}

ขั้นตอนที่ 4

ใช้ตามบริบทเพื่อดูพฤติกรรมเมื่อรัฐมีการเปลี่ยนแปลงการเปลี่ยนแปลงสถานะ

StatePatternDemo.java

เรียนสาธารณะ StatePatternDemo {
   ประชาชนเป็นโมฆะคง main (String args []) {
      บริบทบริบท = บริบทใหม่ ();

      StartState startState = ใหม่ StartState ();
      startState.doAction (บริบท);

      System.out.println (context.getState () toString ().);

      StopState stopState = StopState ใหม่ ();
      stopState.doAction (บริบท);

      System.out.println (context.getState () toString ().);
   }
}

ขั้นตอนที่ 5

ตรวจสอบการส่งออก

ผู้เล่นที่อยู่ในสถานะเริ่มต้น
รัฐเริ่มต้น
ผู้เล่นที่อยู่ในสถานะหยุด
รัฐหยุด