【解决方案1】:

问题

我会有很多各种各样的课程,非常相似(“简单剑”,“钻石剑”,“千兆剑”......)

解决方案

策略模式,而不是创建全新的对象,我将更改该对象的属性

例子

interface IHandle
{
    public int Speed { get; set; }
}
class SimpleHandle : IHandle
{
    public int Speed { get; set; }

    public SimpleHandle()
    {
        Speed = 5;
    }
}
interface IBlade
{
    public int Damage { get; set; }
}
class SimpleBlade : IBlade
{
    public int Damage { get; set; }

    public SimpleBlade()
    {
        Damage = 5;
    }
}
class Sword
{
    private IHandle _handle { get; set; }
    private IBlade _blade { get; set; }

    public void ChangeHandle(IHandle handle)
    {
        _handle = handle;
    }
    public void ChangeBlade(IBlade blade)
    {
        _blade = blade;
    }
}

【讨论】: