码迷,mamicode.com
首页 > 其他好文 > 详细

【编程思想】【设计模式】【结构模式Structural】front_controller

时间:2018-05-14 12:31:46      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:object   图片   模式   provides   man   output   思想   /usr   hid   

Python版

 

https://github.com/faif/python-patterns/blob/master/structural/front_controller.py

技术分享图片
#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
@author: Gordeev Andrey <gordeev.and.and@gmail.com>

*TL;DR80
Provides a centralized entry point that controls and manages request handling.
"""

class MobileView(object):

    def show_index_page(self):
        print(Displaying mobile index page)


class TabletView(object):

    def show_index_page(self):
        print(Displaying tablet index page)


class Dispatcher(object):

    def __init__(self):
        self.mobile_view = MobileView()
        self.tablet_view = TabletView()

    def dispatch(self, request):
        if request.type == Request.mobile_type:
            self.mobile_view.show_index_page()
        elif request.type == Request.tablet_type:
            self.tablet_view.show_index_page()
        else:
            print(cant dispatch the request)


class RequestController(object):
    """ front controller """

    def __init__(self):
        self.dispatcher = Dispatcher()

    def dispatch_request(self, request):
        if isinstance(request, Request):
            self.dispatcher.dispatch(request)
        else:
            print(request must be a Request object)


class Request(object):
    """ request """

    mobile_type = mobile
    tablet_type = tablet

    def __init__(self, request):
        self.type = None
        request = request.lower()
        if request == self.mobile_type:
            self.type = self.mobile_type
        elif request == self.tablet_type:
            self.type = self.tablet_type


if __name__ == __main__:
    front_controller = RequestController()
    front_controller.dispatch_request(Request(mobile))
    front_controller.dispatch_request(Request(tablet))

    front_controller.dispatch_request(Request(desktop))
    front_controller.dispatch_request(mobile)


### OUTPUT ###
# Displaying mobile index page
# Displaying tablet index page
# cant dispatch the request
# request must be a Request object
Python转载版

 

【编程思想】【设计模式】【结构模式Structural】front_controller

标签:object   图片   模式   provides   man   output   思想   /usr   hid   

原文地址:https://www.cnblogs.com/demonzk/p/9035452.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!