การใช้งานง่ายในทั้งสองกรณี แต่การเปิดใช้งานการป้อนพารามิเตอร์กับ Parser1 หมายความว่าอย่างไรเมื่อเปรียบเทียบกับอีกกรณีหนึ่ง
มันคือการเปลี่ยนแปลงการออกแบบขั้นพื้นฐาน และการออกแบบควรสื่อถึงเจตนาและความหมาย คุณจำเป็นต้องมีวัตถุแยกต่างหากสำหรับทุกสายที่คุณต้องการแยกวิเคราะห์? กล่าวอีกนัยหนึ่งทำไมเราต้องการอินสแตนซ์ของตัวแยกวิเคราะห์ด้วย stringX และอีกอินสแตนซ์ที่มี stringY มันเกี่ยวกับการแยกวิเคราะห์ (และ) และสตริงที่กำหนดว่าทั้งสองจะต้องมีชีวิตอยู่และตายด้วยกันคืออะไร? สมมติว่าการใช้ "การแยกวิเคราะห์พื้นฐาน" (ดังที่โรเบิร์ตฮาร์วีย์พูด) ไม่เปลี่ยนแปลงดูเหมือนจะไม่มีประเด็น และแม้แต่ IMHO ที่น่าสงสัย
แนวคิดของคลาสเปลี่ยนไปอย่างไรเมื่อส่งข้อมูลไปยังตัวสร้างแทนพารามิเตอร์เมธอด?
พารามิเตอร์ Constructor บอกสิ่งเหล่านี้กับวัตถุได้ รัฐที่เหมาะสมจะไม่รับประกันหากไม่มีพวกเขา นอกจากนี้ฉันรู้ว่าทำไมตัวแยกวิเคราะห์ตัวหนึ่งจึงแตกต่างจากเดิมอย่างสิ้นเชิง
พารามิเตอร์ของตัวสร้างทำให้ฉันไม่ต้องรู้มากเกินไปเกี่ยวกับวิธีใช้คลาส ถ้าฉันควรจะตั้งค่าคุณสมบัติบางอย่าง - ฉันจะรู้ได้อย่างไร เวิร์มทั้งหมดสามารถเปิดได้ คุณสมบัติอะไร ในลำดับใด ก่อนที่ฉันจะใช้วิธีการอะไร และอื่น ๆ
คำถามอื่นเกิดขึ้นเมื่อฉันตระหนักว่าอินเทอร์เฟซจะค่อนข้างไม่มีความหมายในการใช้งานที่สอง:
อินเตอร์เฟสเช่นเดียวกับใน API เป็นวิธีการและคุณสมบัติที่เปิดเผยรหัสลูกค้า อย่าห่อหุ้มด้วยผ้าpublic interface { ... }
เท่านั้น ดังนั้นความหมายของอินเทอร์เฟซจึงอยู่ใน - หรือคอนสตรัคเตอร์ vs เมธอดพารามิเตอร์ขึ้นเขียงไม่ใช่public interface Iparser
vspublic sealed class Parser
sealed
ระดับเป็นเลขคี่ ถ้าฉันกำลังคิดเกี่ยวกับการใช้งาน parser ที่แตกต่างกัน - คุณพูดถึง "Iparser" - แล้วมรดกเป็นความคิดแรกของฉัน มันเป็นเพียงส่วนขยายแนวคิดตามธรรมชาติในความคิดของฉัน IE ทั้งหมดParserX
s เป็นพื้นฐานParser
s จะพูดยังไงดี ... เยอรมันเชพพาร์ดเป็นสุนัข (มรดก) แต่ฉันสามารถฝึกนกแก้วให้เห่า (ทำตัวเหมือนสุนัข - "อินเทอร์เฟซ"); แต่พอลลี่ไม่ได้เป็นสุนัขเพียงแค่แกล้งทำเป็นเรียนรู้บางส่วนของความดื้อรั้น เรียนนามธรรมหรือมิฉะนั้นให้บริการอย่างสมบูรณ์แบบเดียวกับอินเตอร์เฟซ