Single Responsibility Principle(SRP)
Deir an prionsabal seo gur cheart go mbeadh freagracht amháin ar gach rang. Leagtar béim ann gur chóir go ndéanfadh rang feidhm shonrach amháin agus gan an iomarca cúiseanna a bheith acu le hathrú.
Sampla: Faisnéis úsáideora a bhainistiú agus fógraí ríomhphoist a sheoladh.
class UserManager
def create_user(user_data)
# Logic for creating a user
end
end
class EmailService
def send_email(email_data)
# Logic for sending an email
end
end
Open/Closed Principle(OCP)
Spreagann an prionsabal seo feidhmiúlacht a leathnú trí chód nua a chur leis seachas an cód atá ann cheana a mhodhnú.
Sampla: Láimhseáil modhanna íocaíochta éagsúla in iarratas ríomhthráchtála.
class PaymentProcessor
def process_payment
# Common logic for payment processing
end
end
class CreditCardPaymentProcessor < PaymentProcessor
def process_payment
# Logic for processing credit card payment
end
end
class PayPalPaymentProcessor < PaymentProcessor
def process_payment
# Logic for processing PayPal payment
end
end
Liskov Substitution Principle(LSP)
Dearbhaíonn an prionsabal seo gur cheart réada d’aicme díorthaithe a chur in ionad rudaí den bhunaicme gan cur isteach ar chruinneas an chláir.
Sampla: Cruthanna geoiméadracha a bhainistiú.
class Shape
def area
# Common logic for calculating area
end
end
class Rectangle < Shape
def area
# Logic for calculating area of rectangle
end
end
class Square < Shape
def area
# Logic for calculating area of square
end
end
Interface Segregation Principle(ISP)
Moltar leis an bprionsabal seo comhéadain a bhriseadh ina gcomhéadain níos lú chun iallach a chur ar ranganna modhanna a chur i bhfeidhm nach bhfuil gá leo.
Sampla: Comhéadain chun sonraí a nuashonrú agus a thaispeáint.
module UpdateableFeature
def update_feature
# Logic for updating feature
end
end
module DisplayableFeature
def display_feature
# Logic for displaying feature
end
end
Dependency Inversion Principle(DIP)
Molann an prionsabal seo instealladh spleáchais a úsáid chun spleáchais a bhainistiú.
Sampla: Instealladh spleáchais a úsáid chun spleáchais a bhainistiú.
class OrderProcessor
def initialize(db_connection, email_service)
@db_connection = db_connection
@email_service = email_service
end
end
Cuimhnigh gur chóir SOLID prionsabail a chur i bhfeidhm Ruby go solúbtha bunaithe ar shainchuspóir do thionscadal agus ar do thuiscint ar SOLID agus Ruby.