# 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教程已踩過各種坑,讓你的微服務無障礙的順暢執行起來...