一个非常长的代码

 


完整代码示例:
// 商品接口定义
interface IProduct {
    fun getName(): String;
    fun getPrice(): Float;
}

// 具体商品实现 - 冰箱
class Fridge implements IProduct {
    override fun getName(): String {
        return "Fridge";
    }

    override fun getPrice(): Float {
        return 1500.0f;
    }
}

// 具体商品实现 - 电视
class Television implements IProduct {
    override fun getName(): String {
        return "Television";
    }

    override fun getPrice(): Float {
        return 800.0f;
    }
}

// 用户类 - 展示依赖倒置原则的应用
class Customer(private var product: IProduct?) {
    constructor() : this(null);

    // 设置商品的方法注入
    fun setProduct(product: IProduct) {
        this.product = product;
    }

    // 获取商品名称
    fun getProductName(): String? {
        if (this.product != null) {
            return this.product?.getName();
        }
        return "No Product Selected";
    }

    // 计算总价
    fun calculateTotalPrice(quantity: Int): Float {
        if (this.product != null && quantity > 0) {
            return this.product.getPrice() * quantity.toFloat();
        }
        return 0.0f;
    }
}

// 主程序入口
fun main(args: Array<String>) {
    val fridge = Fridge();          // 创建冰箱实例
    val television = Television();   // 创建电视实例
    
    println("Fridge Name: ${fridge.getName()} Price: $${fridge.getPrice()}");
    println("Television Name: ${television.getName()} Price: $${television.getPrice()}");

    // 初始化客户并设置初始商品为冰箱
    val customer = Customer(fridge);
    
    // 输出当前商品信息
    println("\nCustomer's Current Product:");
    println("Name: ${customer.getProductName()}, Total Price for 3 items: $$${customer.calculateTotalPrice(3)}");
    
    // 更改商品为电视并通过 setter 注入
    customer.setProduct(television);
    
    // 输出更改后的商品信息
    println("\nAfter Changing to Television:");
    println("Name: ${customer.getProductName()}, Total Price for 5 items: $$${customer.calculateTotalPrice(5)}");
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值