09-設計模式企業場景 面試題-mk

文章目錄

  • 1.工廠(方法)模式
    • 1.1.簡單工廠模式(不是設計模式,是編程習慣)
    • 1.2.工廠方法模式(企業開發中最常見)
    • 1.3.抽象工廠模式
  • 2.策略模式
    • 2.1.登錄案例(工廠模式+策略模式)
  • 3.責任鏈設計模式
  • 4.單點登錄怎么是實現的?
  • 5.權限認證是如何實現的
  • 6.上傳數據的安全性你們怎么控制?
  • 7.你負責項目的時候遇到了哪些比較棘手的問題?怎么解決的?
  • 8.你們項目中日志怎么采集的
  • 9.查看日志的命令
  • 10.生產問題怎么排查
  • 11.怎么快速定位系統的瓶頸

你之前項目中用過設計模式嗎?
在這里插入圖片描述
需求:設計一個咖啡店點餐系統。
設計一個咖啡類(Coffee),并定義其兩個子類(美式咖啡【AmericanCoffee】和拿鐵咖啡【LatteCoffee】);再設計一個咖啡店類(CoffeeStore),咖啡店具有點咖啡的功能。具體 類圖設計如下:
在這里插入圖片描述
在這里插入圖片描述
上面的對象都是new出來的,耦合情況比較嚴重,如果需要更換對象,所有new 的地方都要修改,違背了軟件開發的開閉原則。

開閉原則:擴展開放,對修改關閉(對程序進行擴展的時候,不能修改原有的代碼,需要一個熱插拔的效果,那這個怎么解決?通過工廠模式解決,如果需要更換對象,直接更換工廠里面的對象即可,達到對象解耦的目的)
工廠設計模式:解耦

1.工廠(方法)模式

工廠方法模式分類

  • 簡單工廠模式(不是設計模式,是編程的習慣)
  • 工廠方法模式
  • 抽象工廠模式

1.1.簡單工廠模式(不是設計模式,是編程習慣)

簡單工廠包含如下角色:

  • 抽象產品 :定義了產品的規范,描述了產品的主要特性和功能。
  • 具體產品 :實現或者繼承抽象產品的子類
  • 具體工廠 :提供了創建產品的方法,調用者通過該方法來獲取產品。

在這里插入圖片描述

SimpleCoffeeFactory:解除了coffee store 和 coffer 實現類的耦合,又產生新的耦合,coffeeStore 和 SimpleCoffeeFactory 之間的耦合,SimpleCoffeeFactory 和 coffee 之間的耦合,如果后面添加新的咖啡,需要修改SimpleCoffeeFactory 則違反了開閉原則。怎樣解決呢?工廠方法模式

1.2.工廠方法模式(企業開發中最常見)

工廠方法模式可以完美解決上面的問題。

工廠方法模式的主要角色:
抽象工廠(Abstract Factory):提供了創建產品的接口,調用者通過它訪問具體工廠的工廠方法來創建產品。
具體工廠(ConcreteFactory):主要是實現抽象工廠中的抽象方法,完成具體產品的創建。
抽象產品(Product):定義了產品的規范,描述了產品的主要特性和功能。
具體產品(ConcreteProduct):實現了抽象產品角色所定義的接口,由具體工廠來創建,它同具體工廠之間一一對應。
在這里插入圖片描述
CoffeeFactory:抽象工廠,定義了工廠方法,創建產品的規范
AmericanCoffeeFactory、LatteCoffeeFactory:具體工廠,創建具體的產品
CoffeeStore:不同的工廠創建不同的產品對象
在這里插入圖片描述
優點:

  • 用戶只需要知道具體工廠的名稱就可得到所要的產品,無須知道產品的具體創建過程;
  • 在系統增加新的產品時只需要添加具體產品類和對應的具體工廠類,無須對原工廠進行任何修改,滿足開閉原則;

缺點:

  • 每增加一個產品就要增加一個具體產品類和一個對應的具體工廠類,這增加了系統的復雜度。

1.3.抽象工廠模式

工廠方法模式只考慮生產同等級的產品,抽象工廠可以處理多等級產品的生產
在這里插入圖片描述
產品族(品牌):一個品牌下面的所有產品;例如華為下面的電腦、手機稱為華為的產品族;
產品等級(分類):多個品牌下面的同種產品;例如華為和小米都有手機電腦為一個產品等級;

抽象工廠模式:是工廠方法模式的升級版本,工廠方法模式只生產一個等級的產品,而抽象工廠模式可生產多個等級的產品。一個超級工廠創建其他工廠。該超級工廠又稱為其他工廠的工廠

  • 現咖啡店業務發生改變,不僅要生產咖啡還要生產甜點

    • 同一個產品等級(產品分類)
    • 咖啡:拿鐵咖啡、美式咖啡
    • 甜點:提拉米蘇、抹茶慕斯
  • 同一個風味,就是同一個產品族(相當于同一個品牌)

    • 美式風味:美式咖啡、抹茶慕斯
    • 意大利風味:拿鐵咖啡、提拉米蘇

在這里插入圖片描述
在這里插入圖片描述
優點:當一個產品族中的多個對象被設計成一起工作時,它能保證客戶端始終只使用同一個產品族中的對象。(

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/901567.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/901567.shtml
英文地址,請注明出處:http://en.pswp.cn/news/901567.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

BUUCTF-Web(1-20)

目錄 一.SQL注入 (1)[極客大挑戰 2019]EasySQL 萬能密碼 (7)[SUCTF 2019]EasySQL 堆疊注入 解一: 解二: (10)[強網杯 2019]隨便注 堆疊注入 解一: 解二: 解三: (8)[極客大挑戰 2019]LoveSQL 聯…

軟件包安裝管理Gitlab

官方提供了非常詳盡的系統及自動化腳本安裝教程 Gitlab官網下載地址:https://gitlab.cn/install/ 1、安裝配置 今天我們說一下包安裝管理,這樣方便我們自己更精確的制定符合我們自己需要的Gitlab倉庫 配置:ubuntu2004(focal) 4C8G 下載程…

hadoop執行sqoop任務找不到jar

sqoop:1.4.7 hadoop:3.4.1 數據:oracel-hdfs 2025-04-15 16:57:00,850 INFO sqoop.Sqoop: Running Sqoop version: 1.4.7 2025-04-15 16:57:00,901 WARN tool.BaseSqoopTool: Setting your password on the command-line is insecure. Consider using -P instead. 2025-04-15 …

空地機器人在復雜動態環境下,如何高效自主導航?

隨著空陸兩棲機器人(AGR)在應急救援和城市巡檢等領域的應用范圍不斷擴大,其在復雜動態環境中實現自主導航的挑戰也日益凸顯。對此香港大學王俊銘基于阿木實驗室P600無人機平臺自主搭建了一整套空地兩棲機器人,使用Prometheus開源框架完成算法的仿真驗證與…

MCP調用示例-GitHub倉庫操作

在上一篇文章MCP核心概念和應用 ———AI 大模型的標準化工具箱里,我們講述了MCP的安裝,現在讓我們試一試通過示例了解它的功能吧! 首先確保你已經有了相應的APIKEY。 💡大模型中轉API推薦 ?中轉使用教程 1、點擊界面上的 「Done…

zk源碼—5.請求的處理過程一

大綱 1.服務器的請求處理鏈 (1)Leader服務器的請求處理鏈 一.PrepRequestProcessor請求預處理器 二.ProposalRequestProcessor事務投票處理器 三.SyncRequestProcessor事務日志處理器 四.AckRequestProcessor投票反饋處理器 五.CommitProcessor事務提交處理器 六.ToBeA…

小程序獲取用戶總結(全)

獲取方式 目前小程序獲取用戶一共有3中(自己接觸到的),但由于這個API一直在改,所以不確定后期是否有變動,還是要多關注官方公告。 方式一 使用wx.getUserInfo 實例: wxml 文件<button open-type="getUserInfo" bindgetuserinfo="onGetUserInfo&quo…

[LeetCode 1871] 跳躍游戲 7(Ⅶ)

題面&#xff1a; 數據范圍&#xff1a; 2 ≤ s . l e n g t h ≤ 1 0 5 2 \le s.length \le 10^5 2≤s.length≤105 s [ i ] s[i] s[i] 要么是 ′ 0 ′ 0 ′0′ &#xff0c;要么是 ′ 1 ′ 1 ′1′ s [ 0 ] 0 s[0] 0 s[0]0 1 ≤ m i n J u m p ≤ m a x J u m p <…

【Linux】基礎 IO(文件描述符、重定向、緩沖區)

Linux 1.理解文件2.C文件接口1.打開 寫文件2.讀文件 簡單實現cat命令3.輸出信息到顯示器的方式4.stdin、stdout、stderr5.打開文件的方式 3.系統接口 IO1.傳遞標志位2.open、close3.write、read 4.文件描述符1.是什么&#xff1f;2.分配規則3.重定向原理4.通過dup2系統調用重…

Apache Doris SelectDB 技術能力全面解析

Apache Doris 是一款開源的 MPP 數據庫&#xff0c;以其優異的分析性能著稱&#xff0c;被各行各業廣泛應用在實時數據分析、湖倉融合分析、日志與可觀測性分析、湖倉構建等場景。Apache Doris 目前被 5000 多家中大型的企業深度應用在生產系統中&#xff0c;包含互聯網、金融、…

交換機與路由器的默契配合:它們的聯系與區別

交換機與路由器的默契配合&#xff1a;它們的聯系與區別 一. 交換機與路由器的基本功能1.1 交換機的功能1.2 路由器的功能 二. 交換機和路由器的區別三. 交換機和路由器的聯系3.1 數據轉發的協作3.2 網絡分段與分隔3.3 協同工作提供互聯網接入 四. 交換機和路由器的聯合應用場景…

【計算機系統結構】MIPSsim

目錄 雙擊MIPSsim.exe 問題1&#xff1a;Microsoft Defender SmartScreen阻止了無法是被的應用啟動&#xff0c;運行此應用可能會導致你的電腦存在風險 解決 出現下面的問題的話&#xff0c;建議直接在官網下載 問題2&#xff1a;.NET Framework 3.5安裝錯誤代碼0x80240438 …

map 中key 是否可以放置的自定義的對象?

在 Java 中,可以將自定義對象作為 Map 的 Key,但必須滿足以下條件: 1. 必須正確重寫 hashCode() 和 equals() 方法 原因:Map(如 HashMap)依賴這兩個方法確定鍵的唯一性和存儲位置。未正確重寫的風險: 無法正確查找值:即使兩個對象邏輯上相等,若 hashCode 不同,會被視…

【筆記ing】AI大模型-04邏輯回歸模型

一個神經網絡結構&#xff0c;其中的一個神經網絡層&#xff0c;本質就是一個邏輯回歸模型 深度神經網絡的本質就是多層邏輯回歸模型互相連接或采用一定的特殊連接的方式連接在一起構成的。其中每一個層本質就是一個邏輯回歸模型。 邏輯回歸模型基本原理 邏輯回歸&#xff0…

Android學習總結之算法篇七(圖和矩陣)

有向圖的深度優先搜索&#xff08;DFS&#xff09;和廣度優先搜索&#xff08;BFS&#xff09;的示例&#xff0c;以此來模擬遍歷 GC Root 引用鏈這種有向圖結構&#xff1a; 一、深度優先搜索&#xff08;DFS&#xff09; import java.util.*;public class GraphDFS {privat…

熟悉Linux下的編程

可能 目錄 熟悉Linux下Python編程的含義及與非Linux環境編程的區別 一、核心含義解析 二、與非Linux環境的關鍵區別 三、典型應用場景對比 四、能力培養建議 openfoem的下載之路&#xff1a; 方法一&#xff1a;使用cd命令 方法二&#xff1a;使用快捷方式 方法三&am…

c++引入nacos,詳細步驟

以下是將Nacos引入C項目的詳細步驟&#xff0c;包括安裝、配置和代碼實現&#xff1a; 1. 安裝Nacos服務器 下載Nacos服務器安裝包&#xff0c;可以從Nacos官網獲取最新版本。 解壓安裝包并啟動Nacos服務器&#xff1a; cd nacos/bin sh startup.sh -m standalone 這將啟動…

性能優化實踐

4.1 大規模量子態處理的性能優化 背景與問題分析 量子計算中的大規模量子態處理(如量子模擬、量子態可視化)需要高效計算和實時渲染能力。傳統圖形API(如WebGL)在處理高維度量子態時可能面臨性能瓶頸,甚至崩潰(如表格中14量子比特時WebGL的崩潰)。而現代API(如WebGPU…

課堂總結。

第三章第六節 Spark-SQL核心編程&#xff08;五&#xff09;自定義函數&#xff1a;UDF&#xff1a;val sparkConf new SparkConf().setMaster("local[*]").setAppName("SQLDemo")//創建SparkSession對象val spark :SparkSession SparkSession.builder()…

分庫分表-除了hash分片還有別的嗎?

在分庫分表的設計中,除了常見的 Hash 分片,還有多種策略根據業務場景靈活選擇。以下是幾種主流的分庫分表策略及其應用場景、技術實現和優缺點分析,結合項目經驗(如標易行投標服務平臺的高并發場景)進行說明: 一、常見分庫分表策略 1. 范圍分片(Range Sharding) 原理:…