GITGitHub上有趣的资源程序员

python写了个命令模式

2014-03-31  本文已影响560人  Gevin

gist是个很有意思的github子产品,可谓之程序员的twitter,我前面文章中找的很多关于树莓派的资源,都来源于gist。在gist上分享自己的代码片段,是件有趣的事情,不知大家有哪些好玩的代码来分享一下?我在这里先抛砖引玉吧,分享一段我对命令模式的理解(python版),gist上链接请移步这里

class Vehicle(object):
    """docstring for Vehicle"""
    def __init__(self):
        self.name = 'vehicle'
        
    def __call__(self):
        print "travelling by a Vehicle"

    def execute(self):
        self()


class Bus(Vehicle):
    """docstring for Bus"""
    def __init__(self):
        super(Vehicle, self).__init__()
        self.name = 'bus'

    def __call__(self):
        print 'travelling by bus'

    def execute(self):
        self()
        
class Bike(Vehicle):
    """docstring for Bike"""
    def __init__(self):
        super(Vehicle, self).__init__()
        self.name = 'bike'

    def __call__(self):
        print 'travelling by bike'

    def execute(self):
        self()

class Car(Vehicle):
    """docstring for Car"""
    def __init__(self):
        super(Vehicle, self).__init__()
        self.name = 'car'

    def __call__(self):
        print 'travelling by car'

    def execute(self):
        self()

class Rocket(Vehicle):
    """docstring for Rocket"""
    def __init__(self):
        super(Vehicle, self).__init__()
        self.name = 'rocket'

    def __call__(self):
        print 'travelling by rocket'

    def execute(self):
        self()


class Traveller(object):
    """docstring for Traveller"""
    def __init__(self, name):
        self.name = name

    def set_vehicle(self, vehicle):
        self.vehicle = vehicle
        
    def travel(self):
        self.vehicle.execute()


def main():
    # create a traveller
    tom = Traveller('tom')

    print 'stop 1:'
    # traveller's first vehicle
    vehicle = Bus()
    tom.set_vehicle(vehicle)
    tom.travel()

    print 'stop 2:'
    # traveller's second vehicle
    vehicle = Bike()
    tom.set_vehicle(vehicle)
    tom.travel()

    print 'stop 3:'
    # traveller's third vehicle
    vehicle = Car()
    tom.set_vehicle(vehicle)
    tom.travel()

    print 'stop 4:'
    # traveller's fourth vehicle
    vehicle = Rocket()
    tom.set_vehicle(vehicle)
    tom.travel()

if __name__ == '__main__':
    main()
### OUTPUT ###
# stop 1:
# travelling by bus
# stop 2:
# travelling by bike
# stop 3:
# travelling by car
# stop 4:
# travelling by rocket
上一篇下一篇

猜你喜欢

热点阅读