ฉันชอบแนวคิดในวิดีโอ The Principles of Clean Architecture โดยลุง Bob Martin แต่ฉันรู้สึกว่ารูปแบบนี้เหมือนกับการรวมกันของรูปแบบนามธรรมจากโรงงานและตัวสร้างที่แกนกลางของมัน
ไม่ได้ใกล้เคียง.
เมื่อคุณดูสิ่งนี้:
คุณกำลังดูการออกแบบกราฟวัตถุ สิ่งนี้บอกสิ่งที่รู้เกี่ยวกับอะไร สิ่งที่ขาดหายไปจากเรื่องนี้คือวิธีสร้างกราฟวัตถุนั้น ขออภัยคุณจะไม่พบสิ่งนี้ที่นี่ ไม่มีการพูดถึงการก่อสร้าง
คุณสามารถสร้างทั้งหมดนี้ได้โดยไม่ต้องมีโรงงานและผู้สร้างที่เป็นนามธรรม ฉันรู้เพราะฉันทำไปแล้ว ฉันไม่ได้ออกเดินทางเพื่อหลีกเลี่ยงพวกเขา ฉันรักพวกเขา. ฉันไม่ได้ต้องการมัน ฉันเพิ่งใช้การอ้างอิงผ่าน การฉีดพึ่งพาเป็นคำแฟนซีสำหรับที่
ที่จริงแล้วฉันสามารถสร้างทุกสิ่งที่คุณเห็นในแผนภาพนั้นเป็นหลัก จากนั้นเพียงเรียกวิธีการหนึ่งในวัตถุหนึ่งเพื่อเริ่มต้นการฟ้องร้องทั้งหมด
ตอนนี้สิ่งต่าง ๆ ต้องมีอยู่ก่อนที่คุณจะสามารถผลักสิ่งเหล่านั้นไปสู่สิ่งอื่นได้ ฉันสำรวจที่นี่และให้แผนภาพเล็ก ๆ น่ารักนี้:
main()
และคุณสามารถสร้างทุกที่โดยไม่ต้องออก
ฉันอยากจะแนะนำให้ใช้ผู้สร้างและโรงงานเมื่อคุณต้องการแยกกองรหัสการก่อสร้างตามขั้นตอนออกเป็นกลุ่มแนวคิดขนาดกัดที่ดี แต่ไม่มีอะไรในสถาปัตยกรรมที่สะอาดหรือสถาปัตยกรรม buzzword อื่น ๆ ที่คุณต้องการ ดังนั้นถ้าคุณต้องการที่จะยึดติดกับmain()
ดี เพียงแค่โปรดมีความเมตตา
"สถาปัตยกรรมสะอาด" โดยบ็อบมาร์ตินเป็นกฎง่ายๆสำหรับสถาปัตยกรรมทั้งหมดหรือเป็นเพียงหนึ่งในตัวเลือกหรือไม่?
ฉันถือว่า Clean Architecture เป็นคำศัพท์ที่ใช้ขับเคลื่อนผู้คนไปยังบล็อกและหนังสือ บล็อกและหนังสือเล่มนั้นมีคำอธิบายที่ดีมากเกี่ยวกับสถาปัตยกรรมเก่าที่มีชื่อคล้ายกันมากและใช้ชื่อเก่าเพื่อดึงดูดผู้คนไปยังบล็อกเก่า ๆ และหนังสือเก่า หัวหอมเฉพาะเช่นเดียวกับพอร์ตและอะแดปเตอร์ ไม่มีตัวเลือกใดในสถาปัตยกรรมที่คุณมี
ฉันชอบลุงบ๊อบเพราะเขาเป็นนักพูดและผู้แต่งที่ยอดเยี่ยม เขาทำให้ฉันคิดถึงสิ่งที่ฉันไม่ได้มี แต่ถ้าคุณปล่อยให้สิ่งนั้นกลายเป็นความกระตือรือร้นทางศาสนาที่ยืนยันว่าทุกอย่างจะต้องทำในแบบของเขาคุณจะพบว่าเอกสารการอัปเดตนั้นใกล้เคียงที่สุดฉันจะให้คุณเข้าสู่โค้ดของฉัน
สถาปัตยกรรม buzzword มีประโยชน์เมื่อคุณมีรหัสที่มีอายุการใช้งานยาวนานซึ่งต้องคงอยู่ในขณะที่โลกเปลี่ยนไปรอบ ๆ นั่นคือเมื่อมันส่องแสง หากโลกมีความเสถียรเมื่อเทียบกับรหัสคุณจะทำให้สิ่งต่าง ๆ น่าสนใจโดยไม่มีเหตุผล
ไม่ว่าสิ่งที่น่ากลัวจะมีบริบทที่คุณสามารถใส่ไว้ในนั้นจะทำให้ไร้สาระ ขออภัยนี่ไม่ใช่ bullet เงิน
แต่ในวิดีโอฉันรู้สึกว่าเขาแนะนำว่าสถาปัตยกรรมสะอาดควรมีขอบเขตที่ชัดเจนระหว่างตรรกะทางธุรกิจและกรอบงาน Frameworks (เว็บแอนดรอยด์ ฯลฯ ) ควรเป็นปลั๊กอินที่เชื่อมต่อกับตรรกะทางธุรกิจ เขายังแยกรางรถไฟในวิดีโออย่างละเอียด
คุณถูก. เขาทำ. ลุงบ๊อบรู้สึกว่าเฟรมเวิร์กสามารถได้รับการปฏิบัติเหมือนห้องสมุด และพวกเขาสามารถ แต่การตัดสินใจนั้นก็ต้องเสียค่าใช้จ่ายบางอย่าง
สิ่งที่มิสเตอร์มาร์ตินพยายามรักษาคือพื้นที่ที่ภาษาวัตถุประสงค์ทั่วไปของคุณยังคงเป็นเรื่องทั่วไป คุณยอมแพ้เมื่อคุณกระจายเฟรมเวิร์กไปทุกที่ เมื่อคุณทำเช่นนั้นคุณกำลังมุ่งหน้าไปยังเส้นทางของ morphing ภาษาของคุณเป็นสิ่งที่เรียกว่าภาษาเฉพาะโดเมน HTML เป็นภาษาเฉพาะโดเมน มันทำได้ดีมาก แต่มีงานอื่นที่ไม่สามารถทำได้เลย
ตราบใดที่ความต้องการของคุณได้รับการคาดหวังจากกรอบงานสิ่งต่าง ๆ จะราบรื่นมาก ยินดีที่ได้รับความคาดหวังจากคุณ มันทำให้คุณอยู่ในกล่องที่ทำให้สิ่งต่าง ๆ ง่ายขึ้น แค่เข้าใจสิ่งที่คุณยอมแพ้เพื่อรับสิ่งนี้ หากคุณกระจาย Spring ทุกที่คุณจะไม่สามารถโฆษณาได้ว่าเป็นงาน Java อีกต่อไป มันเป็นงาน Java / Spring ฉันสามารถพูดในสิ่งเดียวกันเกี่ยวกับ Ruby and Rails ได้ แต่ Rails กิน Ruby's lunch มานานแล้ว