Single responsibility principle
The single responsibility principle declares that a class should have one, and only one reason to change. And the definition of the world reason in this sentence is important.
Example
Consider a Command
class that is designed to work with both command-line interface and graphical user interface:
class Command { environment: Environment; print(items: ListItem[]) { let stdout = this.environment.stdout; stdout.write('Items:\n'); for (let item of items) { stdout.write(item.text + '\n'); } } render(items: ListItem[]) { let element = <List items={items}></List>; this.environment.render(element); } execute() { } }
To make this actually work, execute
method would need to handle both the command execution and result displaying:
class Command { .. execute() { ...