Skip to content

Instantly share code, notes, and snippets.

@CoderNamedHendrick
Last active June 19, 2022 04:59
Show Gist options
  • Save CoderNamedHendrick/20e287d73db5821f44bcf7c7953be1b4 to your computer and use it in GitHub Desktop.
Save CoderNamedHendrick/20e287d73db5821f44bcf7c7953be1b4 to your computer and use it in GitHub Desktop.
void main() {
Employee emp1 = employee(EmployeeTypes.salesman);
print(emp1.type.name);
}
// Replace Conditional with ploymorphism
Employee employee(EmployeeTypes type) {
switch (type) {
case EmployeeTypes.salesman:
return Salesman();
case EmployeeTypes.engineer:
default:
return Engineer();
}
}
abstract class Employee {
EmployeeTypes get type;
}
class Salesman implements Employee {
@override
EmployeeTypes get type => EmployeeTypes.salesman;
}
class Engineer implements Employee {
@override
EmployeeTypes get type => EmployeeTypes.engineer;
}
enum EmployeeTypes {
salesman,
engineer,
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment