EJB與WebServices 面試題

(一)EJBWebServices部分

1.EBJ是基于哪些技術(shù)實(shí)現(xiàn)的和JavaBean的區(qū)別?

EJB包括Session Bean、Entity Bean、Message Driven Bean,基于JNDI、RMI、JAT等技術(shù)實(shí)現(xiàn)EJB是一個關(guān)于用JAVA語言開發(fā)的可部署的服務(wù)器端組件的組件體系結(jié)構(gòu)。它是一個技術(shù)協(xié)議,能使組件運(yùn)行于任何應(yīng)用服務(wù)器,專門用來解決商務(wù)問題JAVABEANS是JAVA類,是由屬性、事件和方法組成的JAVA組件,它們可以用來組成JAVA應(yīng)用程序

Java Bean是可復(fù)用的組件,對Java Bean并沒有嚴(yán)格的規(guī)范,理論上講,任何一個Java類都可以是一個Bean。但通常情況下,由于Java Bean是被容器所創(chuàng)建(如Tomcat)的,所以Java Bean應(yīng)具有一個無參的構(gòu)造器,另外,通常Java Bean還要實(shí)現(xiàn)Serializable接口用于實(shí)現(xiàn)Bean的持久性。Java Bean實(shí)際上相當(dāng)于微軟COM模型中的本地進(jìn)程內(nèi)COM組件,它是不能被跨進(jìn)程訪問的。Enterprise Java Bean相當(dāng)于DCOM,即分布式組件。它是基于Java的遠(yuǎn)程方法調(diào)用(RMI)技術(shù)的,所以EJB可以被遠(yuǎn)程訪問(跨進(jìn)程、跨計(jì)算機(jī))。但EJB必須被布署在諸如Webspere、WebLogic這樣的容器中,EJB客戶從不直接訪問真正的EJB組件,而是通過其容器訪問。EJB容器是EJB組件的代理,EJB組件由容器所創(chuàng)建和管理,客戶通過容器來訪問真正的EJB組件。

2.Webservice有什么好處?

跨平臺的可互操作性跨防火墻的通信應(yīng)用程序集成軟件和數(shù)據(jù)重用。

3.什么是事物處理,J2EE提供哪兩種事物處理方式

事務(wù)(Transaction)是數(shù)據(jù)庫管理系統(tǒng)提供的基本功能之一,可以把完成用戶一個特定工作的一組操作看作是一個不可拆分的工作單元,所以事務(wù)也就是作業(yè)或任務(wù)。

JDBC:支持單一數(shù)據(jù)庫連接事務(wù)

JTA:支持分布式事務(wù)

4.WEB SERVICE的理解【大唐動力面試題】

Web Service主要是為了使原來各孤立的站點(diǎn)之間的信息能夠相互通信、共享而提出的一種接口。Web Service所使用的是Internet上統(tǒng)一、開放的標(biāo)準(zhǔn),如HTTP、XML、SOAP(簡單對象訪問協(xié)議)、WSDL等,所以Web Service可以在任何支持這些標(biāo)準(zhǔn)的環(huán)境(Windows,Linux)中使用。注:SOAP協(xié)議(Simple Object Access Protocal,簡單對象訪問協(xié)議),它是一個用于分散和分布式環(huán)境下網(wǎng)絡(luò)信息交換的基于XML的通訊協(xié)議。在此協(xié)議下,軟件組件或應(yīng)用程序能夠通過標(biāo)準(zhǔn)的HTTP協(xié)議進(jìn)行通訊。它的設(shè)計(jì)目標(biāo)就是簡單性和擴(kuò)展性,這有助于大量異構(gòu)程序和平臺之間的互操作性,從而使存在的應(yīng)用程序能夠被廣泛的用戶訪問。

5.J2EE系統(tǒng)訪問速度慢.從哪些方面可以優(yōu)化

J2EE性能的優(yōu)化包括很多方面的,要達(dá)到一個性能優(yōu)良的系統(tǒng),除了關(guān)注代碼之外,還應(yīng)該根據(jù)系統(tǒng)實(shí)際的運(yùn)行情況,從服務(wù)器軟硬件環(huán)境、集群技術(shù)、系統(tǒng)構(gòu)架設(shè)計(jì)、系統(tǒng)部署環(huán)境、數(shù)據(jù)結(jié)構(gòu)、算法設(shè)計(jì)等方面綜合考慮來優(yōu)化。一般程序級別的優(yōu)化首先考慮做數(shù)據(jù)緩存,數(shù)據(jù)庫方面全做表的切割、數(shù)據(jù)分區(qū)、索引等這些方面來加快對數(shù)據(jù)的訪問。

6.說說你所知道的應(yīng)用服務(wù)器?

BEA WebLogic Server,IBM WebSphere Application Server,Oracle9i Application Server,jBoss

7.什么是J2EEJ2EE是技術(shù)還是平臺還是框架?什么是J2EE

答:

Je22是Sun公司提出的多層(multi-diered),分布式(distributed),基于組件(component-base)的企業(yè)級應(yīng)用模型(enterpriese application model).在這樣的一個應(yīng)用系統(tǒng)中,可按照功能劃分為不同的組件,這些組件又可在不同計(jì)算機(jī)上,并且處于相應(yīng)的層次(tier)中。所屬層次包括客戶層(clietn tier)組件,web層和組件,Business層和組件,企業(yè)信息系統(tǒng)(EIS)層。

J2EE本身是一個標(biāo)準(zhǔn),一個為企業(yè)分布式應(yīng)用的開發(fā)提供的標(biāo)準(zhǔn)平臺。

J2EE也是一個框架,包括JDBC、JNDI、RMI、JMS、EJB、JTA等技術(shù)。

8.請對以下在J2EE中常用的名詞進(jìn)行解釋(或簡單描述)

web容器:給處于其中的應(yīng)用程序組件(JSP,SERVLET)提供一個環(huán)境,使JSP,SERVLET直接更容器中的環(huán)境變量接口交互,不必關(guān)注其它系統(tǒng)問題。主要有WEB服務(wù)器來實(shí)現(xiàn)。例如:TOMCAT,WEBLOGIC,WEBSPHERE等。該容器提供的接口嚴(yán)格遵守J2EE規(guī)范中的WEB APPLICATION標(biāo)準(zhǔn)。我們把遵守以上標(biāo)準(zhǔn)的WEB服務(wù)器就叫做J2EE中的WEB容器。

EJB容器:Enterprise java bean容器。更具有行業(yè)領(lǐng)域特色。他提供給運(yùn)行在其中的組件EJB各種管理功能。只要滿足J2EE規(guī)范的EJB放入該容器,馬上就會被容器進(jìn)行高效率的管理。并且可以通過現(xiàn)成的接口來獲得系統(tǒng)級別的服務(wù)。例如郵件服務(wù)、事務(wù)管理。

JNDI:(Java Naming & Directory Interface)JAVA命名目錄服務(wù)。主要提供的功能是:提供一個目錄系統(tǒng),讓其它各地的應(yīng)用程序在其上面留下自己的索引,從而滿足快速查找和定位分布式應(yīng)用程序的功能。

JMS:(Java Message Service)JAVA消息服務(wù)。主要實(shí)現(xiàn)各個應(yīng)用程序之間的通訊。包括點(diǎn)對點(diǎn)和廣播。

JTA:(Java Transaction API)JAVA事務(wù)服務(wù)。提供各種分布式事務(wù)服務(wù)。應(yīng)用程序只需調(diào)用其提供的接口即可。

JAF:(Java Action FrameWork)JAVA安全認(rèn)證框架。提供一些安全控制方面的框架。讓開發(fā)者通過各種部署和自定義實(shí)現(xiàn)自己的個性安全控制策略。

RMI/IIOP:(Remote Method Invocation /internet對象請求中介協(xié)議)他們主要用于通過遠(yuǎn)程調(diào)用服務(wù)。例如,遠(yuǎn)程有一臺計(jì)算機(jī)上運(yùn)行一個程序,它提供股票分析服務(wù),我們可以在本地計(jì)算機(jī)上實(shí)現(xiàn)對其直接調(diào)用。當(dāng)然這是要通過一定的規(guī)范才能在異構(gòu)的系統(tǒng)之間進(jìn)行通信。RMI是JAVA特有的。

9.如何給weblogic指定大小的內(nèi)存?

在啟動Weblogic的腳本中(位于所在Domian對應(yīng)服務(wù)器目錄下的startServerName),增加set MEM_ARGS=-Xms32m -Xmx200m,可以調(diào)整最小內(nèi)存為32M,最大200M

10.如何在weblogic中進(jìn)行ssl配置與客戶端的認(rèn)證配置或說說j2ee(標(biāo)準(zhǔn))進(jìn)行ssl的配置?

缺省安裝中使用DemoIdentity.jks和DemoTrust.jks ?KeyStore實(shí)現(xiàn)SSL,需要配置服務(wù)器使用Enable SSL,配置其端口,在產(chǎn)品模式下需要從CA獲取私有密鑰和數(shù)字證書,創(chuàng)建identity和trust keystore,裝載獲得的密鑰和數(shù)字證書??梢耘渲么薙SL連接是單向還是雙向的。

11.EJB是基于哪些技術(shù)實(shí)現(xiàn)的?并說出SessionBeanEntityBean的區(qū)別,StatefulBeanStatelessBean的區(qū)別?

EJB包括Session Bean、Entity Bean、Message Driven Bean,基于JNDI、RMI、JAT等技術(shù)實(shí)現(xiàn)。

SessionBean在J2EE應(yīng)用程序中被用來完成一些服務(wù)器端的業(yè)務(wù)操作,例如訪問數(shù)據(jù)庫、調(diào)用其他EJB組件。EntityBean被用來代表應(yīng)用系統(tǒng)中用到的數(shù)據(jù)。

對于客戶機(jī),SessionBean是一種非持久性對象,它實(shí)現(xiàn)某些在服務(wù)器上運(yùn)行的業(yè)務(wù)邏輯。

對于客戶機(jī),EntityBean是一種持久性對象,它代表一個存儲在持久性存儲器中的實(shí)體的對象視圖,或是一個由現(xiàn)有企業(yè)應(yīng)用程序?qū)崿F(xiàn)的實(shí)體。

Session Bean還可以再細(xì)分為Stateful Session Bean與Stateless Session Bean,這兩種的Session Bean都可以將系統(tǒng)邏輯放在method之中執(zhí)行,不同的是Stateful Session Bean可以記錄呼叫者的狀態(tài),因此通常來說,一個使用者會有一個相對應(yīng)的Stateful Session Bean的實(shí)體。Stateless Session Bean雖然也是邏輯組件,但是他卻不負(fù)責(zé)記錄使用者狀態(tài),也就是說當(dāng)使用者呼叫Stateless Session Bean的時候,EJB Container并不會找尋特定的Stateless Session Bean的實(shí)體來執(zhí)行這個method。換言之,很可能數(shù)個使用者在執(zhí)行某個Stateless Session Bean的methods時,會是同一個Bean的Instance在執(zhí)行。從內(nèi)存方面來看,Stateful Session Bean與Stateless Session Bean比較,Stateful Session Bean會消耗J2EE Server較多的內(nèi)存,然而Stateful Session Bean的優(yōu)勢卻在于他可以維持使用者的狀態(tài)。

12.EJB包括(SessionBean,EntityBean)說出他們的生命周期,及如何管理事務(wù)的?

SessionBean:Stateless Session Bean的生命周期是由容器決定的,當(dāng)客戶機(jī)發(fā)出請求要建立一個Bean的實(shí)例時,EJB容器不一定要創(chuàng)建一個新的Bean的實(shí)例供客戶機(jī)調(diào)用,而是隨便找一個現(xiàn)有的實(shí)例提供給客戶機(jī)。當(dāng)客戶機(jī)第一次調(diào)用一個Stateful Session Bean時,容器必須立即在服務(wù)器中創(chuàng)建一個新的Bean實(shí)例,并關(guān)聯(lián)到客戶機(jī)上,以后此客戶機(jī)調(diào)用Stateful Session Bean的方法時容器會把調(diào)用分派到與此客戶機(jī)相關(guān)聯(lián)的Bean實(shí)例。

EntityBean:Entity Beans能存活相對較長的時間,并且狀態(tài)是持續(xù)的。只要數(shù)據(jù)庫中的數(shù)據(jù)存在,Entity beans就一直存活。而不是按照應(yīng)用程序或者服務(wù)進(jìn)程來說的。即使EJB容器崩潰了,Entity beans也是存活的。Entity Beans生命周期能夠被容器或者Beans自己管理。

EJB通過以下技術(shù)管理實(shí)務(wù):對象管理組織(OMG)的對象實(shí)務(wù)服務(wù)(OTS),Sun Microsystems的Transaction Service(JTS)、Java Transaction API(JTA),開發(fā)組(X/Open)的XA接口。

13.EJB的幾種類型

【參考答案】

會話(Session Bean)Bean,實(shí)體(Entity Bean)Bean消息驅(qū)動的(Message Driven Bean)Bean

會話Bean又可分為有狀態(tài)(Stateful)和無狀態(tài)(Stateless)兩種。

實(shí)體Bean可分為Bean管理的持續(xù)性(BMP)和容器管理的持續(xù)性(CMP)兩種。

14.TomcatWebLogic的區(qū)別?【杭州網(wǎng)闕科技

【參考答案】

1)WLS全面支持J2EE的標(biāo)準(zhǔn)規(guī)范和其他標(biāo)準(zhǔn)規(guī)范(Web Service, SSL, xml等),同時BEA為眾多規(guī)范組織的制定者之一,積極參與規(guī)范的制定;Tomcat只支持部分J2EE標(biāo)準(zhǔn),應(yīng)用局限性強(qiáng),不能夠安全穩(wěn)定的支持大并發(fā)

2)WLS:集群機(jī)制,支持分布式的應(yīng)用;Tomcat:不支持

3)WLS:開發(fā)模式下,不用重起部署新Web, EJB應(yīng)用;Tomcat:不支持

4)WLS收費(fèi)的應(yīng)用服務(wù)器,支持EJB容器。Tomat開源,但只實(shí)現(xiàn)了Web容器,不支持企業(yè)級應(yīng)用。

(二)項(xiàng)目管理與設(shè)計(jì)模式

1.OO設(shè)計(jì)原則?

單一責(zé)任原則、依賴倒置原則、開放封閉原則OCP。

2.什么情況下,不能用單例模式。

單例模式簡單易用,但是也是所有設(shè)計(jì)模式中最容易濫用的模式。當(dāng)你的類想得到很好的擴(kuò)展時,不能使用單例模式。

3.軟件開發(fā)的流程是怎樣的?【云巢動脈】

需求分析、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)、編碼、測試、交付、驗(yàn)收、維護(hù)

4.描述工廠模式和單例優(yōu)缺點(diǎn)舉例在什么情況下用。

單例模式優(yōu)點(diǎn):

單例保證一個類只有單一的實(shí)例,也就是說你無法通過New來創(chuàng)建這個類的一個新實(shí)例好處:當(dāng)一個對象在程序內(nèi)部只能有一個實(shí)例的時候,它可以保證我們不會重復(fù)創(chuàng)建,而是始終指向同一個對象。缺點(diǎn)就是它就是在內(nèi)存上共享,都可以去訪問它,而且多個用戶訪問的都是同一個實(shí)例,會造成線程不安全。

工廠模式優(yōu)點(diǎn):

第一,方便系統(tǒng)統(tǒng)一管理與維護(hù),降低組件間耦合。

第二,它讓具體的創(chuàng)建實(shí)例與客戶端分離,客戶端是通過它們的抽象接口操縱實(shí)例,使得實(shí)例名不會出現(xiàn)在客戶端代碼中。

5.寫適配器模式,觀察者模式?【云巢動脈】

適配器模式:

Target:定義Client使用的與特定領(lǐng)域相關(guān)的接口

publicinterfaceTarget

{

voidrequest();

}

Adaptee:現(xiàn)在需要適配的已經(jīng)存在的接口

publicclassAdaptee

{

publicvoidspecificRequest(){}

}

Adapter:對Adaptee的接口與Target接口進(jìn)行適配

publicclassAdapterimplementsTarget

{

publicAdapter(Adaptee adaptee)

{

super();

this.adaptee = adaptee;

}

publicvoidrequest()

{

adaptee.specificRequest();

}

privateAdaptee adaptee;

}

觀察者模式:

Subject

1. Subject可以加將Observer對象的引用保存在一個聚集中,每個Subject可以有任意個Observer。

2.提供注冊和刪除Observer對象的接口。

publicinterfaceSubject

{

publicvoidregisterObserver(Observer o);

publicvoidremoveObserver(Observer o);

publicvoidnotifyObservers();

}

Observer

1.為那些在Subject發(fā)生改變時需獲得通知的對象定義一個更新接口。

publicinterfaceObserver

{

publicvoidupdate();

}

Concrete Subject

1.將有關(guān)狀態(tài)存入各ConcreteObserver對象,當(dāng)它的狀態(tài)發(fā)生改變時,向它的各個觀察者發(fā)出通知。

publicclassConcreteSubjectimplementsSubject

{

privateArrayList observers;

publicConcreteSubject()

{

observers =newArrayList();

}

publicvoidregisterObserver(Observer o)

{

observers.add(o);

}

publicvoidremoveObserver(Observer o)

{

inti = observers.indexOf(o);

if(i >= 0)

{

observers.remove(i);

}

}

publicvoidnotifyObservers()

{

for(inti = 0; i < observers.size(); i++)

{

observer = observers.get(i);

observer.update();

}

}

publicvoidstateChanged()

{

notifyObservers();

}

publicvoidsetState()

{

stateChanged();

}}

Concrete Observer

1.維護(hù)一個指向ConcreteSubject對象的引用。

2.存儲有關(guān)狀態(tài),這些狀態(tài)應(yīng)與Subject的狀態(tài)保持一致。

3.實(shí)現(xiàn)Observer的更新接口以使自身狀態(tài)與Subject的狀態(tài)保持一致。

publicclassConcreteObserverimplementsObserver

{

privateSubject subject;

publicConcreteObserver(Subject subject)

{

this.subject = subject;

subject.registerObserver(this);

}

publicvoidupdate()

{

// your code

}}

6.適配器模式解釋【】

把一個類的接口變換成客戶端所期待的另一種接口,從而使原本因接口原因不匹配而無法一起工作的兩個類能夠一起工作。適配類可以根據(jù)參數(shù)返還一個合適的實(shí)例給客戶端

7.說說UML

標(biāo)準(zhǔn)建模語言UML。用例圖,靜態(tài)圖(包括類圖、對象圖和包圖),行為圖,交互圖(順序圖,合作圖),實(shí)現(xiàn)圖。

8.UML中的幾種關(guān)系?

依賴,關(guān)聯(lián),泛化,實(shí)現(xiàn)

9.UML幾種圖及用途?

1)用例圖—描述系統(tǒng)的參與者與用例之間的關(guān)系

2)類圖—描述系統(tǒng)中的概念及它們之間的關(guān)系

3)對象圖—描述系統(tǒng)中實(shí)例及它們之間關(guān)系

4)狀態(tài)圖—描述系統(tǒng)中對象所具備的狀態(tài),及觸發(fā)狀態(tài)改變的事件

5)時序圖—描述對象之間發(fā)送消息的時間順序

6)協(xié)作圖—描述對象之間協(xié)作關(guān)系

7)活動圖—描述執(zhí)行過程中涉及的活動及狀態(tài)變化

8)組件圖—描述系統(tǒng)組件之間的關(guān)系

9)配置圖—描述系統(tǒng)的硬件及軟件的物理結(jié)構(gòu)

10.常用的設(shè)計(jì)模式?說明工廠模式。

Java中的23種設(shè)計(jì)模式:

Factory(工廠模式),Builder(建造模式),F(xiàn)actory Method(工廠方法模式),

Prototype(原始模型模式),Singleton(單例模式),F(xiàn)acade(門面模式),

Adapter(適配器模式),Bridge(橋梁模式),Composite(合成模式),

Decorator(裝飾模式),F(xiàn)lyweight(享元模式),Proxy(代理模式),

Command(命令模式),Interpreter(解釋器模式),Visitor(訪問者模式),

Iterator(迭代子模式),Mediator(調(diào)停者模式),Memento(備忘錄模式),

Observer(觀察者模式),State(狀態(tài)模式),Strategy(策略模式),

Template Method(模板方法模式),Chain Of Responsibleity(責(zé)任鏈模式)

工廠模式:

工廠模式是一種經(jīng)常被使用到的模式,所指的是簡單工廠模式,還有另一種工廠方法模式、單例模式,也用到一些工廠模式的思想。工廠模式可以根據(jù)提供的數(shù)據(jù)生成一組類中某一個類的實(shí)例,通常這一組類有一個公共的抽象父類并且實(shí)現(xiàn)了相同的方法,但是這些方法針對不同的數(shù)據(jù)進(jìn)行了不同的操作。首先需要定義一個基類,該類的子類通過不同的方法實(shí)現(xiàn)了基類中的方法。然后需要定義一個工廠類,工廠類可以根據(jù)條件生成不同的子類實(shí)例。當(dāng)?shù)玫阶宇惖膶?shí)例后,開發(fā)人員可以調(diào)用基類中的方法而不必考慮到底返回的是哪一個子類的實(shí)例,這就是工廠模式的實(shí)現(xiàn)。

【說明】

設(shè)計(jì)模式分為三大類:創(chuàng)建型,結(jié)構(gòu)型,行為型。

分別是:

創(chuàng)建型(工廠、工廠方法、抽象工廠、單例)

結(jié)構(gòu)型(包裝、適配器,組合,代理)

行為(觀察者,模版,策略)

說6、7種即可。

11.DAO設(shè)計(jì)模式與DELEGATE模式

DAO(Data Access Object)模式實(shí)際上是兩個模式的組合,即Data Accessor模式和Active Domain Object模式,其中Data Accessor模式實(shí)現(xiàn)了數(shù)據(jù)訪問和業(yè)務(wù)邏輯的分離,而Active Domain Object模式實(shí)現(xiàn)了業(yè)務(wù)數(shù)據(jù)的對象化封裝,一般我們將這兩個模式組合使用。

DAO模式通過對底層數(shù)據(jù)的封裝,為業(yè)務(wù)層提供一個面向?qū)ο蟮慕涌冢沟脴I(yè)務(wù)邏輯開發(fā)員可以面向業(yè)務(wù)中的實(shí)體進(jìn)行編碼。通過引入DAO模式,業(yè)務(wù)邏輯更加清晰,且富于形象性和描述性,這將為日后的維護(hù)帶來極大的便利。試想,在業(yè)務(wù)曾通過Customer.getName方法獲得客戶姓名,相對于直接通過SQL語句訪問數(shù)據(jù)庫表并從ResultSet中獲得某個字符型字段而言,哪種方式更加易于業(yè)務(wù)邏輯的形象化和簡潔化?

Business Delegate起到客戶端業(yè)務(wù)抽象化的作用。它抽象化,進(jìn)而隱藏業(yè)務(wù)服務(wù)的實(shí)現(xiàn)。使用Business Delegate,可以降低表示層客戶端和系統(tǒng)的業(yè)務(wù)服務(wù)之間的耦合程度。根據(jù)實(shí)現(xiàn)策略不同,Business Delegate可以在業(yè)務(wù)服務(wù)API的實(shí)現(xiàn)中,保護(hù)客戶端不受可能的變動性影響。這樣,在業(yè)務(wù)服務(wù)API或其底層實(shí)現(xiàn)變化時,可以潛在地減少必須修改表示層客戶端代碼的次數(shù)。

12.適配器模式與橋梁模式的區(qū)別

適配器模式把一個類的接口變換成客戶端所期待的另一種接口,從而使原本因接口不匹配而無法在一起工作的兩個類能夠在一起工作。又稱為轉(zhuǎn)換器模式、變壓器模式、包裝模式(把已有的一些類包裝起來,使之能有滿足需要的接口)。適配器模式的用意是將接口不同而功能相同或者相近的兩個接口加以轉(zhuǎn)換,包括適配器角色補(bǔ)充一些源角色沒有但目標(biāo)接口需要的方法。就像生活中電器插頭是三相的,而電源插座是兩相的,這時需要一個三相變兩相的轉(zhuǎn)換器來滿足。

比如,在Java I/O庫中使用了適配器模式,象FileInputStream是一個適配器類,其繼承了InputStrem類型,同時持有一個對FileDiscriptor的引用。這是將一個FileDiscriptor對象適配成InputStrem類型的對象形式的適配器模式。StringReader是一個適配器類,其繼承了Reader類型,持有一個對String對象的引用。它將String的接口適配成Reader類型的接口。等等。

橋梁模式的用意是要把實(shí)現(xiàn)和它的接口分開,以便它們可以獨(dú)立地變化。橋梁模式并不是用來把一個已有的對象接到不相匹配的接口上的。當(dāng)一個客戶端只知道一個特定的接口,但是又必須與具有不同接口的類打交道時,就應(yīng)該使用橋梁模式。

比如,JDBC驅(qū)動器就是一個橋梁模式的應(yīng)用,使用驅(qū)動程序的應(yīng)用系統(tǒng)就是抽象化角色,而驅(qū)動器本身扮演實(shí)現(xiàn)化角色。應(yīng)用系統(tǒng)和JDBC驅(qū)動器是相對獨(dú)立的。應(yīng)用系統(tǒng)動態(tài)地選擇一個合適的驅(qū)動器,然后通過驅(qū)動器向數(shù)據(jù)庫引擎發(fā)出指令就可以訪問數(shù)據(jù)庫中的數(shù)據(jù)。

13.開發(fā)中都用到了那些設(shè)計(jì)模式?用在什么場合?

簡單工廠模式、單例模式、觀察者模式、適配器模式等。

i???F?

下載完整面試題文件:
https://www.duyunwl.cn/2019/03/08/java面試題大全/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,767評論 18 399
  • 一. Java基礎(chǔ)部分.................................................
    wy_sure閱讀 3,838評論 0 11
  • 1、面向?qū)ο蟮奶卣饔心男┓矫?1.抽象:抽象就是忽略一個主題中與當(dāng)前目標(biāo)無關(guān)的那些方面,以便更充分地注意與當(dāng)前目標(biāo)...
    michaelgong閱讀 852評論 0 1
  • 小編費(fèi)力收集:給你想要的面試集合 1.C++或Java中的異常處理機(jī)制的簡單原理和應(yīng)用。 當(dāng)JAVA程序違反了JA...
    八爺君閱讀 4,673評論 1 114
  • TopEng BOSS3.0 渠道合作伙伴委托測試項(xiàng)目 1.java中什么是類,什么是接口? 答:Java程序的基...
    java大濕兄閱讀 4,023評論 5 19