重构 -- Replace Subclass with Fields(以值域取代子类)

动机(Motivation)

修改这些函数,使它们返回superclass中的某个(新增值域,然后销毁subclasses)

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
public abstract class Person
{
   public  abstract bool IsMale();
   public  abstract string GetCode();
 
   public Person CreateMale()
   {
       return new  Male();
   }
 
   public Person CreateFemale()
   {
       return new Female();
   }
}
 
public class Male : Person
{
 
    public override bool IsMale()
    {
        return true;
    }
 
    public override string GetCode()
    {
        return "M";
    }
}
 
public class Female : Person
{
 
    public override bool IsMale()
    {
        return false;
    }
 
    public override string GetCode()
    {
        return "F";
    }
}

 

改为

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
public class Person
{
    private bool _IsMale;
    private string _Code;
 
    public bool IsMale
    {
        get { return _IsMale; }
        set { _IsMale = value; }
    }
 
    public string Code
    {
        get { return _Code; }
        set { _Code = value; }
    }
    public Person(bool isMale, string code)
    {
        this._IsMale = isMale;
        this._Code = code;
    }
}
 
public class Male : Person
{
 
    public Male()
        : base(true, "M")
    { }
}
 
public class Female : Person
{
    public Female()
        : base(false, "F")
    { }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值