Android 这是否违反了单一责任原则(SRP)

Android 这是否违反了单一责任原则(SRP),android,kotlin,single-responsibility-principle,Android,Kotlin,Single Responsibility Principle,方法getSummary和getMovementType是否因为知道太多(Context)而违反了SRP?这些方法用于回收视图.Adapter abstract class Movement( val movementId: Int = 0, val created: Date = Date(), val createdBy: String = "", val movementActive: String = Constants.ACTIVE, var q

方法
getSummary
getMovementType
是否因为知道太多(
Context
)而违反了SRP?这些方法用于
回收视图.Adapter

abstract class Movement(
    val movementId: Int = 0,
    val created: Date = Date(),
    val createdBy: String = "",
    val movementActive: String = Constants.ACTIVE,
    var quantity: Double = 0.0,
    var material: Material = Material()
) {
    abstract fun getSummary(context: Context): String
    abstract fun getMovementType(context: Context): String
}


data class Entry(
    val id: Int = 0,
    var observation: String = "",
    var warehouse: Warehouse = Warehouse()
) : Movement() {

    override fun getSummary(context: Context) =
        context.getString(R.string.title_warehouse) + ": ${warehouse.name}. " +
        context.getString(R.string.title_material) + ": ${material.name}. " +
        context.getString(R.string.quantity) + ": $quantity. " +
        context.getString(R.string.observation) + ": $observation. " +
        context.getString(R.string.user) + ": $createdBy"

    override fun getMovementType(context: Context) = context.getString(R.string.title_entry)
}

不,没有。

无论方法知道什么(在您的案例中的上下文),SRP都将“承担单一责任”


我发现您的方法只从上下文返回一些值。不要让他们做任何其他事情(例如,将某物设置到某个地方或将某物发送到某个地方),您将遵循SRP

不,它不会。

无论方法知道什么(在您的案例中的上下文),SRP都将“承担单一责任”


我发现您的方法只从上下文返回一些值。不要让他们做任何其他事情(例如,将某物设置到某处或将某物发送到某处),然后您遵循SRP

此问题将根据意见获得答案,这与堆栈溢出无关,你最好在另一个社区问这个问题这个问题会得到基于意见的答案,这与堆栈溢出无关,你最好在另一个社区问这个问题不同意,这个方法可以很容易地放在适配器而不是模型中,考虑到适配器是负责显示此数据的组件这一事实。这个类现在负责数据的传输,并且知道如何通过适配器列表的类型
Movement
来显示数据,当然还有很多子类,每个子类显示不同的信息。@a_local_nobody问题是“方法是否违反SRP?”。好吧,方法不行。我想这是公平的:)方法本身没有问题,但我不同意把它们放在教室里model@a_local_nobody同意你的观点,但这不是问题的答案。不同意,这种方法可以很容易地放在适配器中而不是模型中,考虑到适配器是负责显示此数据的组件这一事实。这个类现在负责数据的传输,并且知道如何通过适配器列表的类型
Movement
来显示数据,当然还有很多子类,每个子类显示不同的信息。@a_local_nobody问题是“方法是否违反SRP?”。好吧,方法不行。我想这是公平的:)方法本身没有问题,但我不同意把它们放在教室里model@a_local_nobody我同意你的看法,但这不是问题的答案