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我同意你的看法,但这不是问题的答案