重构——62提炼子类(Extract Subclass)
时间: 2023-08-01 12:12:22 浏览: 50
重构——62提炼子类(Extract Subclass)指的是将一个类中的一部分功能提取出来,形成一个新的子类,使得原来的类和新的子类各自专注于自己的领域,提高代码的可读性和可维护性。
这个重构技巧适用于以下情况:
1. 当一个类的某些功能只对类的一部分对象有意义时,可以将这部分对象独立出来,形成一个新的子类。
2. 当一个类的某些属性和方法只对某个子类有意义时,可以将这些属性和方法提取出来,形成一个新的子类。
3. 当一个类中包含多个功能相似的方法时,可以将这些方法提取出来,形成一个新的子类。
通过提炼子类,可以使得代码更加清晰,易于维护和扩展。但是也需要注意,过度使用子类会导致类的数量增多,增加代码的复杂度,因此需要根据实际情况进行权衡。
相关问题
子类化(subclass)
CSDN 开发的 C 知道 AI 语言模型回答:
子类化(subclass)是面向对象编程中的一个概念,指的是创建一个新的类,该类继承了一个已有的类的属性和方法,并且可以添加新的属性和方法。子类化可以帮助程序员更好地组织代码,提高代码的可重用性和可维护性。
写一个函数,接收两个参数,父类SupClass和子类SubClass 表示父构造函数和子构造函数,实现子类继承父类,提示,子类继承父类时不要丢失子类自己的属性和方法
好的,可以使用以下代码实现:
```
function inherit(SupClass, SubClass) {
// 通过一个空函数中转实现原型链的继承
function F() {}
F.prototype = SupClass.prototype;
SubClass.prototype = new F();
SubClass.prototype.constructor = SubClass;
// 记录子类与父类之间的继承关系
SubClass.superClass = SupClass.prototype;
// 子类自己的属性和方法
SubClass.prototype.subProp = "sub property";
SubClass.prototype.subMethod = function() {
console.log("sub method");
};
}
// 父类
function SupClass() {
this.supProp = "sup property";
}
SupClass.prototype.supMethod = function() {
console.log("sup method");
};
// 子类
function SubClass() {
// 调用父类构造函数
SupClass.call(this);
this.subProp = "override sup property";
}
// 继承父类
inherit(SupClass, SubClass);
// 测试
var subObj = new SubClass();
console.log(subObj.supProp);
subObj.supMethod();
console.log(subObj.subProp);
subObj.subMethod();
```
输出结果为:
```
sup property
sup method
override sup property
sub method
```
解释:inherit函数实现了原型链的继承,并且记录了子类与父类之间的继承关系。在子类构造函数中,调用父类构造函数,同时也可以重写父类的属性。最后,创建子类的实例,并且可以访问父类和子类的属性和方法。