编程思想设计模式结构模式Structuralfront_controller

Posted 炼狱腾蛇

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编程思想设计模式结构模式Structuralfront_controller相关的知识,希望对你有一定的参考价值。

Python版

 

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

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

"""
@author: Gordeev Andrey <[email protected]>

*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转载版

 

以上是关于编程思想设计模式结构模式Structuralfront_controller的主要内容,如果未能解决你的问题,请参考以下文章

编程思想设计模式结构模式Structural享元模式flyweight

编程思想设计模式结构模式Structuralfront_controller

面向对象编程思想-备忘录模式

面向对象编程思想-模板方法模式

设计模式 设计原则实现高内聚低耦合的编程思想

面向对象编程思想-组合模式