Tag:

构建器模式和大量的强制性参数

迄今为止,我使用了以下构建器模式的实现(与此处描述的实现相反): public class Widget { public static class Builder { public Builder(String name, double price) { … } public Widget build() { … } public Builder manufacturer(String value) { … } public Builder serialNumber(String value) { … } public Builder model(String value) { … } } private Widget(Builder builder) { … } } 这适用于我遇到的大多数情况,我需要建立一个复杂的对象与各种必需/强制性和可选参数。 然而,最近我一直在努力去理解,当所有的参数都是强制性的(或者至少绝大多数参数是强制性的)时,这种模式是有什么好处的。 […]

在Kotlin中,如何将扩展方法添加到另一个类中,但仅在特定的上下文中才可见?

在Kotlin中,我想将扩展方法添加到类中,例如添加到Entity类中。 但是我只想在Entity处于事务中时看到这些扩展,否则就隐藏了。 例如,如果我定义这些类和扩展: interface Entity {} fun Entity.save() {} fun Entity.delete() {} class Transaction { fun start() {} fun commit() {} fun rollback() {} } 我现在可以在任何时候不小心调用save()和delete() ,但是我只希望它们在事务的start()之后可用,而不是在commit()或rollback() ? 目前我可以做到这一点,这是错误的: someEntity.save() // DO NOT WANT TO ALLOW HERE val tx = Transaction() tx.start() someEntity.save() // YES, ALLOW tx.commit() someEntity.delete() // DO NOT WANT TO ALLOW HERE […]