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); }
與之相反的動作:移除子類別
別名:用狀態/策略取代類別代碼,萃取子類別