結構模式 提供集中的入口點,用於控制和管理請求處理

2021-09-29 07:06:34 字數 2171 閱讀 8458

# coding=utf-8

class

mobileview

(object):

defshow_index_page

(self)

:print

('顯示移動手機索引頁面'

)class

tabletview

(object):

defshow_index_page

(self)

:print

('顯示平板電腦索引頁面'

)# 響應請求處理

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(

)# 請求操作的處理

class

request

(object):

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

else

:print()

# 請求控制器

class

requestcontroller

(object):

""" front controller """

def__init__

(self)

: self.dispatcher = dispatcher(

)# 響應操作處理

defdispatch_request

(self, request):if

isinstance

(request, request)

: self.dispatcher.dispatch(request)

else

:print

('request引數:必須是乙個request物件'

)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'

)

輸出:

顯示移動手機索引頁面

顯示平板電腦索引頁面

request引數:必須是乙個request物件

面向復用的設計模式(結構模式和行為模式)

結構模式 介面卡模式 用於匹配不協調的介面的類。裝飾模式 動態地向乙個類中的乙個存在的物件新增或重寫新的行為。門面模式 為一堆龐大的 提供乙個簡化的介面。行為模式 策略模式 舉個例子,動物的叫聲,貓和狗和其他動物的叫聲都不一樣,讓系統根據物件的差別來正確地發出叫聲就是策略模式。模板模式 一些共性的行...

PHP設計模式之結構模式的深入解析

結構模式之間有許多相似之處,因為在物件模型結構中存在幾種關係 類之間的繼承和實現,加上物件組合,這些是php設計模式的主要目的。物件組合的最大優勢在於可以在執行時基於配置建立起乙個關係,並不用修改實際的 它是類繼承和介面實現需要的乙個操作。實際上,你完全可以通過修改物件之間而非類之間的鏈結定義乙個應...

設計模式(1) 建立模式 結構模式 行為模式的區別

hdis framework是乙個基於springboot kubernetes 阿里雲服務,編寫的乙個用於支撐微服務的極速開發框架。其文件詳盡,demo全面,設計合理,開箱即用,節省開發時間,提公升開發效率。配套的docker kubernetes教程已踩過各種坑,讓你的微服務無障礙的順暢執行起來...