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


