ruby 单一责任原则在起作用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ruby 单一责任原则在起作用相关的知识,希望对你有一定的参考价值。

# The class FinancialReportMailer uses composition
# i.e an instance of another class FinancialReportGenerator
# and it's methods to implement SRP.
# FinancialReportGenerator generates a report.
# The report is passed to FinancialReportMailer, where method, deliver
# is invoked to send the generated report 
class FinancialReportMailer
  def initialize(report, account)
    @report = report
    @account = account
  end

  def deliver
    Mailer.deliver(
      from: 'reporter@example.com',
      to: @account.email,
      subject: 'Financial report',
      body: @report
    )
  end
end

class FinancialReportGenerator
  def initialize(transactions)
    @transactions = transactions
  end

  def generate
    @transactions.map { |t| "amount: #{t.amount} type: #{t.type} date: #{t.created_at}"
    }.join("\n")
  end
end

report = FinancialReportGenerator.new(transactions).generate
FinancialReportMailer.new(report, account).deliver

以上是关于ruby 单一责任原则在起作用的主要内容,如果未能解决你的问题,请参考以下文章

软件设计原则---单一责任(职责)原则

单一责任原则是不是促进了逻辑分组之上的许多小类?

在这种情况下如何使用 java 尊重单一责任原则?

如何应用 SOLID 原则整理 React 代码之单一原则

如何应用 SOLID 原则整理 React 代码之单一原则

php WordPress和单一责任原则 - 来自https://carlalexander.ca/single-responsibility-principle-wordpress/