Skip to content

Instantly share code, notes, and snippets.

@jnovikov
Created February 17, 2018 11:47
Show Gist options
  • Save jnovikov/ef0c2949ef133a402fc2f93790f7875a to your computer and use it in GitHub Desktop.
Save jnovikov/ef0c2949ef133a402fc2f93790f7875a to your computer and use it in GitHub Desktop.
class BaseLogStrategy(object):
def log(self, message):
raise NotImplementedError()
class StdoutStrategy(BaseLogStrategy):
def log(self, message):
print(message)
class FileStrategy(BaseLogStrategy):
def __init__(self, filename):
self.filename = filename
def log(self,message):
with open(self.filename,'a') as f:
f.write(message + '\n')
class App(object):
def __init__(self):
self.users = []
self.log_strategy = None
def set_strategy(self,log_strategy):
self.log_strategy = log_strategy
def add_user(self, user):
self.users.append(user)
self.log_strategy.log("Added user "+user)
def exist_user(self, user):
self.log_strategy.log("Finding user " + user)
return user in self.users
app = App()
out_strategy = StdoutStrategy()
app.set_strategy(out_strategy)
app.add_user("Lol")
app.add_user("KEK")
file_strategy = FileStrategy("out.txt")
app.set_strategy(file_strategy)
app.add_user("Cheburek")
app.add_user("Arbidol")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment