一些派生类具有预定义的值,而另一些则没有

时间:2018-09-19 13:55:25

标签: inheritance design-patterns kotlin

在我的Kotlin应用程序中,我处理了一些成员资格类型。例如:

interface MembershipType {
    fun getExcessOptions(): List 
}

派生类型为GOLDSILVERBRONZEPLATNIUM

所有4种类型都有多余选项的列表。例如:

enum class MembershipType(val name: String) : IValueOptions {
    SILVER("silver") {
        override fun getExcessOptions() = listOf(300,200,100)
    }, //for GOLD, BRONZE, PLATNIUM etc

对于GOLDSILVER类型,可以将它们选择为Bundle,因此它们必须具有可供选择的预定义valueOptions列表。

对于BRONZEPLATNIUM,它们只能是Named,因此用户输入自己的值,他们可以选择。

基本上我想代表以下内容:

MemeberShip Type || Options           || Value Options
GOLD             || Bundle            || 100, 200, 3000
SILVER           || Bundle and Named  || 4000, 5000
PLATINUM         || Named
BRONZE           || Named


data class Bundle (
        val excess: Int
        val value: Int
) 

data class Named (
        val excess: Int
        val value: Int
) 

data class Selection(val bundle : Bundle?, val items : List<Named>)

我该如何用Kotlin中的类和继承来表示这一点,或者就枚举而言,这两种类型在它们具有预定义的valueOptions属性的意义上是唯一的?

1 个答案:

答案 0 :(得分:0)

也许这可以为您提供一个起点

import pymysql
#import myconnutils
import datetime
import xlrd
import re
import os
import csv



#open csv file
with open('DBstatus.csv') as csvfile:
    reader = csv.DictReader(csvfile)
    for row in reader:
        print(row['Host Name'], row["OS Type"], row['Host Description'])





#create database connection

databaseConnection = pymysql.connect(host='localhost', user='xxx', password='xxx', db='mydb', cursorclass= pymysql.cursors.DictCursor)

try:
    cursorObject = databaseConnection.cursor()
    # parms = (row['Host Name'], row["OS Type"], row['Host Description'])

    # resultArgs = cursor.callproc('update_servers', inOutParams)
    cursorObject.execute("call update_servers")

    for result in cursorObject.fetchall():
        print(result)
except Exception as e:
    print("exception occured: {}".format (e))

finally:
    databaseConnection.close()

密封类就像类和枚举组合在一起, 您不能再从外部扩展密封类了,每个对象可以扩展不同的接口

有关该信息的更多信息,请参见文档:https://kotlinlang.org/docs/reference/sealed-classes.html