Python @ DjangoSpin

PyPro #82 Proxy Design Pattern

Buffer this pageShare on FacebookPrint this pageTweet about this on TwitterShare on Google+Share on LinkedInShare on StumbleUpon
Reading Time: 1 minutes

Proxy Design Pattern in Python

Proxy Design Pattern in Python

Write a Python program to implement Proxy Design Pattern.

class Car:
    '''Resource-intensive object'''
    def driveCar(self):
        print("Driving Car....")
 
class CarProxy:
    '''Relatively less resource-intensive proxy acting as middleman. Instantiates a Car object only if the driver is of age.'''
    def __init__(self): 
        self.ageOfDriver = 15
        self.car = None
 
    def driveCar(self):
        print("Proxy in action. Checking to see if the driver is of age or underage...")
        if self.ageOfDriver >= 18:
            # If driver is of age, let him drive the car.
            self.car = Car()
            self.car.driveCar()
        else:
            # Otherwise, don't instantiate the car object.
            print("Driver is underage. Can't drive the car.")
 
# Instantiate the Proxy
carProxy = CarProxy()
# Client attempting to drive a car at the default age of 15. Logically, since he/she cannot have a driving license, there is no need to buy a car, or, in our case, make the car object.
carProxy.driveCar()
 
# OUTPUT:
# Proxy in action. Checking to see if the driver is of age or underage...
# Driver is underage. Can't drive the car.
 
# Altering the age of the driver
carProxy.ageOfDriver = 21
# Client attempting to drive a car at the default age of 21. Should succeed.
carProxy.driveCar()
 
# OUTPUT:
# Proxy in action. Checking to see if the driver is of age or underage...
# Driving Car....

See also:

Buffer this pageShare on FacebookPrint this pageTweet about this on TwitterShare on Google+Share on LinkedInShare on StumbleUpon

Leave a Reply