Skip to content

Instantly share code, notes, and snippets.

View atsuya046's full-sized avatar

Nobuya Oshiro atsuya046

View GitHub Profile
@atsuya046
atsuya046 / builder.py
Created January 19, 2014 05:07
GoF design pattern with Python
# -*- coding:utf-8 -*-
"""
@author: Diogenes Augusto Fernandes Herminio <diofeher@gmail.com>
https://gist.github.com/420905#file_builder_python.py
"""
class Director(object):
def __init__(self):
self.buider = None
@atsuya046
atsuya046 / adapter.py
Created January 20, 2014 04:38
GoF design pattern with Python. - Adapter
# -*- coding: utf-8 -*-
""""http://ginstrom.com/scribbles/2008/11/06/generic-adapter-class-in-python/"""
import os
class Dog(object):
def __init__(self):
self.name = "Dog"
def bark(self):
@atsuya046
atsuya046 / strategy.py
Created January 21, 2014 04:47
GoF design pattern with Python. - Strategy
# http://stackoverflow.com/questions/963965/how-is-this-strategy-pattern
# -written-in-python-the-sample-in-wikipedia
"""
In most of other languages Strategy pattern is implemented via creating some
base strategy interface/abstract class and subclassing it with a number of
concrete strategies (as we can see at
http://en.wikipedia.org/wiki/Strategy_pattern), however Python supports
higher-order functions and allows us to have only one class and inject
functions into it's instances, as shown in this example.
"""
@atsuya046
atsuya046 / decorator.py
Created January 22, 2014 14:48
GoF design pattern - Decorator
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""http://stackoverflow.com/questions/3118929/implementing-the-decorator-pattern-in-python"""
class foo_decorator(object):
def __init__(self, decoratee):
self._decoratee = decoratee
def f1(self):
@atsuya046
atsuya046 / facade.py
Created January 24, 2014 04:29
GoF design pattern -Facade
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import time
SLEEP = 0.5
# Complex Parts
class TC1:
def run(self):
@atsuya046
atsuya046 / mediator.py
Created January 27, 2014 14:33
GoF design pattern - Mediator
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import random
import time
class TC:
def __init__(self):
self._tm = None
self._bProblem = 0
@atsuya046
atsuya046 / singleton.py
Created January 30, 2014 22:34
GoF design pattern - Singleton.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""http://python-3-patterns-idioms-test.readthedocs.org/en/latest/Singleton.html"""
class OnlyOne:
class __OnlyOne:
def __init__(self, arg):
self.val = arg
# -*- coding utf-8 -*-
"""http://ginstrom.com/scribbles/2007/10/08/design-patterns-python-style/"""
class JapaneseGetter:
"""A simple localizer a la gettext"""
def __init__(self):
self.trans = dict(dog="犬", cat="猫")
def get(self, msgid):
@atsuya046
atsuya046 / observer.py
Created February 2, 2014 14:04
GoF design pattern - Observer
# -*- coding: utf-8 -*-
"""http://code.activestate.com/recipes/131499-observer-pattern/"""
class Subject(object):
def __init__(self):
self._observers = []
def attach(self, observer):
if not observer in self._observers:
@atsuya046
atsuya046 / chain_of_responsibility.py
Created February 3, 2014 15:15
GoF design pattern - Chain of Responsibility
# -*- coding: utf-8 -*-
class Handler:
def successor(self, successor):
self.successor = successor
class ConcreteHandler1(Handler):
def handle(self, request):