日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java常用设计模式(面试常考)

發布時間:2023/12/10 java 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java常用设计模式(面试常考) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

設計模式——Singleton(單例模式)

(1)定義:在程序運行期間,確保類的實例只有一個,并且提供了一個公共的入口點。實現的思路就是將構造函數私有,并且提供一個全局靜態的方法返回一個實例。

(2)應用場景:

多線程中的線程池、應用程序的日志對象、數據庫的連接池、應用的配置對象、緩存等常常被設計成單例。

(3)示例代碼:

簡單版(餓漢模式):

public class Singleton {private static Singleton instance = new Singleton(); //餓漢模式:立即初始化private Singleton() { } ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//私有化構造器public static Singleton getInstance() { ? ? ? ? ? ? ? ? ? ? ?//提供公有的單例訪問點return instance;}}

雙重檢查版(懶漢模式):

public class Singleton{private volatile static Singleton instance; ? //懶漢模式:延時到用時才初始化private Singleton() { }public static Singleton getInstance() {if(instance==null) {synchronized (Singleton.class) { ?//塊避免多線程并發,同步塊+雙重檢查if(instance==null) ? ? ? ? ? ? ?instance = new Singleton();}}return instance;}}

設計模式——Simple Factory(簡單工廠)設計模式

(1)定義:提供一個抽象產品(父類),由一個工廠類根據當前環境決定創建出哪一種實際產品(子類)的實例。

(2)應用場合:

Spring中作為DI容器使用時,可以看作就是一個工廠。又如Spring事務處理時需要一個抽象的產品“事務管理器”——PlatformTransactionManager,實際配置的則是具體的事務管理,如HibernateTransactionManager或者是DataSourceTransactionManager。當然Spring本身的功能非常復雜,用到的遠遠不僅是簡單工廠一個模式。

(3)示例代碼:

interface Vehicle{ ? ? ? ?//車輛抽象父類void run();}class Car implements Vehicle{ ? ?//小轎車子類public void run() {System.out.println("---小車在行駛---");}}class Tank implements Vehicle{ ?//坦克子類public void run() {System.out.println("---轟隆隆,坦克在行駛---");}}class Factory{ ? ? ? ? ? ? ? ? ? ? ? ? ? ? //工廠類public static Vehicle getVehicle(String name) {if("tank".equals(name)) { ? ? ? ? ? ? //根據條件返回子類return new Tank();}else {return new Car();}}}

設計模式——Proxy(代理)模式

(1)定義:創造一個代理類出來,包裝并替原對象進行操作。

(2)應用場景:

攔截器、AOP和ORM的懶加載等地方都使用了代理模式。

(3)示例:

//接口public interface UserDao{void save();}//目標類public class UserDaoImpl implements UserDao{public void save(){System.out.println("保存用戶");}}//代理類public class UserDaoProxy implements UserDao{private UserDao target;public void setTarget(UserDao userDao){this.target = userDao;}public void save(){System.out.println("---預處理---"); ? ? ? ? //注入增強代碼this.target.save();System.out.println("---后處理---"); ? ? ? ? //注入增強代碼}}

想要學習更多的基礎開發知識和可能遇到的面試問題可以看我另外一篇文章:

原文鏈接:https://blog.csdn.net/qq_55917018/article/details/122187021

總結

以上是生活随笔為你收集整理的Java常用设计模式(面试常考)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。