一般化


📌 メソッドアップ(Pull Upメソッド)


サブクラスが同じ結果を返すメソッドを持つ場合、これらのメソッドをスーパークラスに移動するメソッド

再包装前のソース

class Employee{...}

class Salesman extends Employee{
	get name() {...}
}

class Engineer extends Employee{
	get name() {...}
}

再包装したソース

class Employee{
	get name(){...}
}

class Salesman extends Employee{...}
class Engineer extends Employee{...}

📌 抽出サブクラス(Extract Subclass)


クラスに特定のインスタンスでのみ使用される機能がある場合、これらの機能からなるサブクラスを作成する方法.

再包装前のソース

function createEmployee(name, type){
	return new Employee(name, type);
}

再包装したソース

function createEmployee(name, type){
	switch(type){
    	case "engineer" : return new Engineer(name);
        case "salesman" : return new Salesman(name);
        case "manager" : return new Manager(name);
    }
}

📑 References


https://chchoing88.github.io/ho_blog/generalization-processing/