版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
本文格式為Word版,下載可任意編輯——工廠(chǎng)方法模式(講)
工廠(chǎng)方法模式(FactoryMethod)—對(duì)象創(chuàng)立型模式
工廠(chǎng)模式有以下幾種形態(tài):
簡(jiǎn)單工廠(chǎng)(SimpleFactory)模式;
工廠(chǎng)方法(FactoryMethod)模式,又稱(chēng)多形性工廠(chǎng)(PolymorphicFactory)模式;抽象工廠(chǎng)(AbstractFactory)模式,又稱(chēng)工具箱(Kit或Toolkit)模式
概述
在軟件系統(tǒng)中,經(jīng)常面臨著“某個(gè)對(duì)象〞的創(chuàng)立工作,由于需求的變化,這個(gè)對(duì)象的具體實(shí)現(xiàn)經(jīng)常面臨著猛烈的變化,但是它卻擁有比較穩(wěn)定的接口。如何應(yīng)對(duì)這種變化?提供一種封裝機(jī)制來(lái)隔離出“這個(gè)易變對(duì)象〞的變化,從而保持系統(tǒng)中“其它依靠該對(duì)象的對(duì)象〞不隨著需求的改變而改變?這就是要說(shuō)的FactoryMethod模式了。意圖
定義一個(gè)用戶(hù)創(chuàng)立對(duì)象的接口,讓子類(lèi)決定實(shí)例化哪一個(gè)類(lèi)。FactoryMethod使一個(gè)類(lèi)的實(shí)例化延遲到其子類(lèi)。工廠(chǎng)方法模式講解
在工廠(chǎng)方法模式中,核心的工廠(chǎng)類(lèi)不再負(fù)責(zé)所有產(chǎn)品的創(chuàng)立,而是將具體創(chuàng)立工作交給子類(lèi)去做。這個(gè)核心類(lèi)僅僅負(fù)責(zé)給出具體工廠(chǎng)必需實(shí)現(xiàn)的接口,而不接觸哪一個(gè)產(chǎn)品類(lèi)被實(shí)例化這種細(xì)節(jié)。這使得工廠(chǎng)方法模式可以允許系統(tǒng)在不修改工廠(chǎng)角色的狀況下引進(jìn)新產(chǎn)品。在FactoryMethod模式中,工廠(chǎng)類(lèi)與產(chǎn)品類(lèi)往往具有平行的等級(jí)結(jié)構(gòu),它們之間一一對(duì)應(yīng)。
現(xiàn)在我們考慮一個(gè)日志記錄的例子(這里我們只是為了說(shuō)明FactoryMethod模式,實(shí)際項(xiàng)目中的日志記錄不會(huì)這么去做,也要比這繁雜一些)。假定我們要設(shè)計(jì)日志
記錄的類(lèi),支持記錄的方法有FileLog和EventLog兩種方式。在這里我們先不談設(shè)計(jì)模式,那么這個(gè)日志記錄的類(lèi)就很好實(shí)現(xiàn)了:1
///
2///日志記錄類(lèi)3///4publicclassLog56
7publicvoidWriteEvent()8
{{
9Console.WriteLine(\10}11
12publicvoidWriteFile()13
{
14Console.WriteLine(\15}16
17publicvoidWrite(stringLogType)18
{
19switch(LogType.ToLower())20
{
21case\22WriteEvent();
23break;24
25case\26WriteFile();27break;28
29default:30break;31}32}33}34
這樣的程序結(jié)構(gòu)顯然不能符合我們的要求,假使我們?cè)黾右环N新的日志記錄的方式DatabaseLog,那就要修改Log類(lèi),隨著記錄方式的變化,switch語(yǔ)句在不斷的變化,這樣就引起了整個(gè)應(yīng)用程序的不穩(wěn)定,進(jìn)一步分析上面的代碼,發(fā)現(xiàn)對(duì)于EventLog和FileLog是兩種完全不同的記錄方式,它們之間不應(yīng)當(dāng)存在必然的聯(lián)系,而應(yīng)當(dāng)把它們分別作為單獨(dú)的對(duì)象來(lái)對(duì)待。1
///
2///EventLog類(lèi)3///4publicclassEventLog5
{
6publicvoidWrite()7
{
8Console.WriteLine(\9}10}1112
///
13///FileLog類(lèi)14///15publicclassFileLog16
{
17publicvoidWrite()18
{
19Console.WriteLine(\20}21}22
進(jìn)一步抽象,為它們抽象出一個(gè)共同的父類(lèi),結(jié)構(gòu)圖如下:
實(shí)現(xiàn)代碼:1
///
2///Log類(lèi)3///
4publicabstractclassLog5
{
6publicabstractvoidWrite();7}8
此時(shí)EventLog和FileLog類(lèi)的代碼應(yīng)當(dāng)如下:1
///
2///EventLog類(lèi)3///
4publicclassEventLog:Log5
{
6publicoverridevoidWrite()7
{
8Console.WriteLine(\9}10}11
///
12///FileLog類(lèi)13///14publicclassFileLog:Log
15{
16publicoverridevoidWrite()17
{
18Console.WriteLine(\19}20}21
此時(shí)我們?cè)倏丛黾有碌挠涗浫罩痉绞紻atabaseLog的時(shí)候,需要做哪些事情?只需要增加一個(gè)繼承父類(lèi)Log的子類(lèi)來(lái)實(shí)現(xiàn),而無(wú)需再去修改EventLog和FileLog類(lèi),這樣的設(shè)計(jì)滿(mǎn)足了類(lèi)之間的層次關(guān)系,又很好的符合了面向?qū)ο笤O(shè)計(jì)中的單一職責(zé)原則,每一個(gè)類(lèi)都只負(fù)責(zé)一件具體的事情。到這里似乎我們的設(shè)計(jì)很完美了,事實(shí)上我們還沒(méi)有看客戶(hù)程序如何去調(diào)用。在應(yīng)用程序中,我們要使用某一種日志記錄方式,可能會(huì)用到如下這樣的語(yǔ)句:
EventLogeventlog=newEventLog();eventlog.Write();
當(dāng)日志記錄的方式從EventLog變化為FileLog,我們就得修改所有程序代碼中出現(xiàn)上面語(yǔ)句的部分,這樣的工作量是可想而知的。此時(shí)就需要解耦具體的日志記錄方式和應(yīng)用程序。這就要引入FactoryMethod模式了,每一個(gè)日志記錄的對(duì)象就是工廠(chǎng)所生成的產(chǎn)品,既然有兩種記錄方式,那就需要兩個(gè)不同的工廠(chǎng)去生產(chǎn)了,代碼如下:1
///
2///EventFactory類(lèi)3///
4publicclassEventFactory5
{
6publicEventLogCreate()7
{
8returnnewEventLog();9}10}11
///
12///FileFactory類(lèi)13///14publicclassFileFactory15
{
16publicFileLogCreate()17
{
18returnnewFileLog();19}20}21
這兩個(gè)工廠(chǎng)和具體的產(chǎn)品之間是平行的結(jié)構(gòu),并一一對(duì)應(yīng),并在它們的基礎(chǔ)上抽象出一個(gè)公用的接口,結(jié)構(gòu)圖如下:
實(shí)現(xiàn)代碼如下:1
///
2///LogFactory類(lèi)3///
4publicabstractclassLogFactory5
{
6publicabstractLogCreate();7}8
此時(shí)兩個(gè)具體工廠(chǎng)的代碼應(yīng)當(dāng)如下:1
///
2///EventFactory類(lèi)3///
4publicclassEventFactory:LogFactory5
{
6publicoverrideEventLogCreate()
7{
8returnnewEventLog();9}10}11
///
12///FileFactory類(lèi)13///
14publicclassFileFactory:LogFactory15
{
16publicoverrideFileLogCreate()17
{
18returnnewFileLog();19}20}21
這樣通過(guò)工廠(chǎng)方法模式我們把上面那對(duì)象創(chuàng)立工作封裝在了工廠(chǎng)中,此時(shí)我們似乎完成了整個(gè)FactoryMethod的過(guò)程。這樣達(dá)到了我們應(yīng)用程序和具體日志記錄對(duì)象之間解耦的目的了嗎?看一下此時(shí)客戶(hù)端程序代碼:1
///
2///App類(lèi)
3///4publicclassApp5
{
6publicstaticvoidMain(string[]args)
7{
8LogFactoryfactory=newEventFactory();9
10Loglog=factory.Create();11
12log.Write();13}14}15
在客戶(hù)程序中,我們有效地避免了具體產(chǎn)品對(duì)象和應(yīng)用程序之間的耦合,可是我們也看到,增加了具體工廠(chǎng)對(duì)象和應(yīng)用程序之間的耦合。那這樣畢竟帶來(lái)什么好處呢?我們知道,在應(yīng)用程序中,Log對(duì)象的創(chuàng)立是頻繁的,在這里我們可以把LogFactoryfactory=newEventFactory();
這句話(huà)放在一個(gè)類(lèi)模塊中,任何需要用到Log對(duì)象的地方依舊不變。要是換一種日志記錄方式,只要修改一處為:
LogFactoryfactory=newFileFactory();
其余的任何地方我們都不需要去修改。有人會(huì)說(shuō)那還是修改代碼,其實(shí)在開(kāi)發(fā)中我們很難避免修改,但是我們可以盡量做到只修改一處。結(jié)構(gòu)圖
適用性
在以下?tīng)顩r下,適用于工廠(chǎng)方法模式:
1.當(dāng)一個(gè)類(lèi)不知道它所必需創(chuàng)立的對(duì)象的類(lèi)的時(shí)候。2.當(dāng)一個(gè)類(lèi)希望由它的子類(lèi)來(lái)指定它所創(chuàng)立的對(duì)象的時(shí)候。
3.當(dāng)類(lèi)將創(chuàng)立對(duì)象的職責(zé)委托給多個(gè)幫助子類(lèi)中的某一個(gè),并且你希望將哪一個(gè)幫助
子類(lèi)是代理者這一信息局部化的時(shí)候。
生活中的例子
工廠(chǎng)方法定義一個(gè)用于創(chuàng)立對(duì)象的接口,但是讓子類(lèi)決定實(shí)例化哪個(gè)類(lèi)。壓注成型演示了這種模式。塑料玩具制造商加工塑料粉,將塑料注入到希望形狀的模具中。玩具的類(lèi)別(車(chē),人物等等)是由模具決定的。
例子抽象工廠(chǎng)(Creator)角色:是工廠(chǎng)方法模式的核心,與應(yīng)用程序無(wú)關(guān)。任何在模式中創(chuàng)立的對(duì)象的工廠(chǎng)類(lèi)必需實(shí)現(xiàn)這個(gè)接口。具體工廠(chǎng)(ConcreteCreator)角色:這是實(shí)現(xiàn)抽象工廠(chǎng)接口的具體工廠(chǎng)類(lèi),包含與應(yīng)用程序密切相關(guān)的規(guī)律,并且受到應(yīng)用程序調(diào)用以創(chuàng)立產(chǎn)品對(duì)象。在上圖中有兩個(gè)這樣的角色:BulbCreator與TubeCreator。抽象產(chǎn)品(Product)角色:工廠(chǎng)方法模式所創(chuàng)立的對(duì)象的超類(lèi)型,也就是產(chǎn)品對(duì)象的共同父類(lèi)或共同擁有的接口。在上圖中,這個(gè)角色是Light。具體產(chǎn)品(ConcreteProduct)角色:這個(gè)角色實(shí)現(xiàn)了抽象產(chǎn)品角色所定義的接口。某具體產(chǎn)品有專(zhuān)門(mén)的具體工廠(chǎng)創(chuàng)立,它們之間往往一一對(duì)應(yīng)。程序舉例:usingSystem;publicabstractclassLight{publicabstractvoidTurnOn();publicabstractvoidTurnOff();}publicclassBulbLight:Light{publicoverridevoidTurnOn(){Console.WriteLine(\publicoverridevoidTurnOff(){Console.WriteLine(\}publicclassTubeLight:Light{publicoverridevoidTurnOn(){Console.WriteLine(\publicoverridevoidTurnOff(){Console.WriteLine(\}publicabstractclassCreator{publicabstractLightfactory();}publicclassBulbCreator:Creator{publicoverrideLightfactory(){returnnewBulbLight();}}publicclassTubeCreator:Creator{publicoverrideLightfactory(){returnnewTubeLight();}}publicclassClient{publicstaticvoidMain(){Creatorc1=newBulbCreator();Creatorc2=newTubeCreator();Lightl1=c1.factory();Lightl2=c2.factory();l1.TurnOn();l1.TurnOff();Console.WriteLine(\l2.TurnOn();l2.TurnOff();}}工廠(chǎng)方法的活動(dòng)序列圖
活動(dòng)過(guò)程包括:客戶(hù)端創(chuàng)立BulbCreator對(duì)象,客戶(hù)端持有此對(duì)象的類(lèi)型是Creator,而實(shí)際類(lèi)型是BulbCreator。然后客戶(hù)端調(diào)用BulbCreator的factory方法,之后BulbCreator調(diào)用BulbLight的構(gòu)造函數(shù)創(chuàng)造出產(chǎn)品BulbLight對(duì)象。實(shí)現(xiàn)要點(diǎn)
1.FactoryMethod模式的兩種狀況:一是Creator類(lèi)是一個(gè)抽象類(lèi)且它不提供它所聲明的工廠(chǎng)方法的實(shí)現(xiàn);二是Creator是一個(gè)具體的類(lèi)且它提供一個(gè)工廠(chǎng)方法的缺省實(shí)現(xiàn)。
2.工廠(chǎng)方法是可以帶參數(shù)的。
3.工廠(chǎng)的作用并不僅僅只是創(chuàng)立一個(gè)對(duì)象,它還可以做對(duì)象的初始化,參數(shù)的設(shè)置等。效果
1.用工廠(chǎng)方法在一個(gè)類(lèi)的內(nèi)部創(chuàng)立對(duì)象尋常比直接創(chuàng)立對(duì)象更靈活。
2.FactoryMethod模式通過(guò)面向?qū)ο蟮氖址ǎ瑢⑺獎(jiǎng)?chuàng)立的具體對(duì)象的創(chuàng)立工作延
遲到了子類(lèi),從而提供了一種擴(kuò)展的策略,較好的解決了這種緊耦合的關(guān)系??偨Y(jié)
FactoryMethod模式是設(shè)計(jì)模式中應(yīng)用最為廣泛的模式,通過(guò)本文,相信讀者已經(jīng)對(duì)它有了一定的認(rèn)識(shí)。然而我們要明確的是:在面向?qū)ο蟮木幊讨?,?duì)象的創(chuàng)立工作十分簡(jiǎn)單,對(duì)象的創(chuàng)立時(shí)機(jī)卻很重要。FactoryMethod要解決的就是對(duì)象的創(chuàng)立時(shí)機(jī)問(wèn)題,它提供了一種擴(kuò)展的策略,很好地符合了開(kāi)放封閉原則。
當(dāng)發(fā)現(xiàn)系統(tǒng)只用一個(gè)產(chǎn)品類(lèi)等級(jí)不足以描述所有的產(chǎn)品類(lèi),包括以后可能要添加的新的產(chǎn)品類(lèi)時(shí),就應(yīng)當(dāng)考慮采用工廠(chǎng)方法模式。由于工廠(chǎng)方法模式可以容大量個(gè)實(shí)的工廠(chǎng)類(lèi),以每一個(gè)工廠(chǎng)類(lèi)負(fù)責(zé)每一個(gè)產(chǎn)品類(lèi)等級(jí),因此這種模式可以容納所有的產(chǎn)品等級(jí)。
區(qū)別:
關(guān)于工廠(chǎng)方法的一點(diǎn)探討,我們知道工廠(chǎng)方法屬于類(lèi)型創(chuàng)立模式,而抽象工廠(chǎng)屬于對(duì)象創(chuàng)立模式,并且所謂的類(lèi)創(chuàng)立模式就是把創(chuàng)立工作延遲到子類(lèi),而對(duì)象創(chuàng)立模式則將延遲到另一個(gè)對(duì)象。
工廠(chǎng)方法模式的意義是定義一個(gè)創(chuàng)立產(chǎn)品對(duì)象的工廠(chǎng)接口,將實(shí)際創(chuàng)立工作推遲到子類(lèi)當(dāng)中。核心工廠(chǎng)類(lèi)不再負(fù)責(zé)產(chǎn)品的創(chuàng)立,這樣核心類(lèi)成為一個(gè)抽象工廠(chǎng)角色,僅負(fù)責(zé)具體工廠(chǎng)子類(lèi)必需實(shí)現(xiàn)的接口
工廠(chǎng)解決的問(wèn)題是一個(gè)系列的對(duì)象的創(chuàng)立;工廠(chǎng)方法模式在農(nóng)場(chǎng)系統(tǒng)中的實(shí)現(xiàn)1背景
在簡(jiǎn)單工廠(chǎng)模式中,有個(gè)全能的園丁,控制所有作物的種植、生長(zhǎng)和收獲?,F(xiàn)在農(nóng)場(chǎng)規(guī)模變大了,管理更加專(zhuān)業(yè)化了。過(guò)去全能的園丁沒(méi)有了,每一種作物都有專(zhuān)門(mén)的園丁管理,形成了規(guī)?;蛯?zhuān)業(yè)化生產(chǎn)。
2系統(tǒng)設(shè)計(jì)機(jī)構(gòu)圖
3實(shí)現(xiàn)源碼
3.1水果產(chǎn)品接口Fruit.java
packagecom.lavasoft.patterns.factorymethod.ybms;/**
*CreatedbyIntelliJIDEA.*FileName:Fruit.java*ReadMe:水果接口*/
publicinterfaceFruit{/***種植*/
voidplant();/***生長(zhǎng)*/
voidgrow();/***收獲
*/
voidharvest();}
3.2具體產(chǎn)品蘋(píng)果Apple.java
packagecom.lavasoft.patterns.factorymethod.ybms;/**
*CreatedbyIntelliJIDEA.*FileName:Apple.java*ReadMe:水果工廠(chǎng)的產(chǎn)品:蘋(píng)果*/
publicclassAppleimplementsFruit{privateinttreeAge;/***種植*/
publicvoidplant(){
System.out.println(\}/***生長(zhǎng)*/
publicvoidgrow(){
System.out.println(\}
/***收獲*/
publicvoidharvest(){
System.out.println(\}/**
*@return返回樹(shù)齡*/
publicintgetTreeAge(){returntreeAge;}/***設(shè)置樹(shù)齡*/
publicvoidsetTreeAge(inttreeAge){this.treeAge=treeAge;}}
3.3具體產(chǎn)品葡萄:Grape.java
packagecom.lavasoft.patterns.factorymethod.ybms;/**
*CreatedbyIntelliJIDEA.*FileName:Grape.java*ReadMe:水果工廠(chǎng)的產(chǎn)品:葡萄
*/
publicclassGrapeimplementsFruit{privatebooleanseedless;//是否有籽/***種植*/
publicvoidplant(){
System.out.println(\}/***生長(zhǎng)*/
publicvoidgrow(){
System.out.println(\}/***收獲*/
publicvoidharvest(){
System.out.println(\}/**
*@return是否有籽*/
publicbooleangetSeedless(){
returnseedless;}/**
*有無(wú)籽的賦值方法*/
publicvoidsetSeedless(booleanseedless){this.seedless=seedless;}/***輔助方法*/
publicstaticvoidlog(Stringmsg){System.out.println(msg);}}
3.4具體產(chǎn)品草莓:Strawberry.java
packagecom.lavasoft.patterns.factorymethod.ybms;/**
*CreatedbyIntelliJIDEA.*FileName:Strawberry.java*ReadMe:水果工廠(chǎng)的產(chǎn)品:草莓*/
publicclassStrawberryimplementsFruit{/***生長(zhǎng)
*/
publicvoidgrow(){
System.out.println(\}/***收獲*/
publicvoidharvest(){
System.out.println(\}/***種植*/
publicvoidplant(){
System.out.println(\}/***輔助方法*/
publicstaticvoidlog(Stringmsg){System.out.println(msg);}}
3.5水果工廠(chǎng)接口:FruitGardener.java
packagecom.lavasoft.patterns.factorymethod.ybms;/**
*CreatedbyIntelliJIDEA.*FileName:FruitGardener.java*ReadMe:水果工廠(chǎng)接口*/
publicinterfaceFruitGardener{/***工廠(chǎng)方法*
*@return水果*/
publicFruitfactory();}
3.6蘋(píng)果工廠(chǎng):AppleGardener.java
packagecom.lavasoft.patterns.factorymethod.ybms;/**
*CreatedbyIntelliJIDEA.*FileName:AppleGardener.java
*工廠(chǎng)模式--工廠(chǎng)方法模式--一般性模式(農(nóng)場(chǎng)應(yīng)用)*ReadMe:蘋(píng)果工廠(chǎng)方法*/
publicclassAppleGardenerimplementsFruitGardener{/**
*工廠(chǎng)方法*
*@return蘋(píng)果*/
publicFruitfactory(){Fruitf=newApple();
System.out.println(\水果工廠(chǎng)(AppletGardener)成功創(chuàng)立一個(gè)水果:蘋(píng)果!\returnf;}}
3.7葡萄工廠(chǎng):GrapeGardener.java
packagecom.lavasoft.patterns.factorymethod.ybms;/**
*CreatedbyIntelliJIDEA.*FileName:GrapeGardener.java
*工廠(chǎng)模式--工廠(chǎng)方法模式--一般性模式(農(nóng)場(chǎng)應(yīng)用)*ReadMe:添加說(shuō)明*/
publicclassGrapeGardenerimplementsFruitGardener{/***工廠(chǎng)方法*
*@return葡萄*/
publicFruitfactory(){Fruitf=newGrape();
System.out.println(\水果工廠(chǎng)(GrapeGardener)成功創(chuàng)立一個(gè)水果:葡萄!\returnf;}}
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 通史版2022高考?xì)v史一輪復(fù)習(xí)板塊總結(jié)二中國(guó)近現(xiàn)代史課件
- 2024年陜西省中醫(yī)醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫(kù)頻考點(diǎn)附帶答案
- 2024年桂林師范高等專(zhuān)科學(xué)校高職單招語(yǔ)文歷年參考題庫(kù)含答案解析
- 2024年杭州科技職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測(cè)驗(yàn)歷年參考題庫(kù)(頻考版)含答案解析
- 2024年成都職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測(cè)驗(yàn)歷年參考題庫(kù)(頻考版)含答案解析
- 2024年廣西制造工程職業(yè)技術(shù)學(xué)院高職單招語(yǔ)文歷年參考題庫(kù)含答案解析
- 2024年廣州衛(wèi)生職業(yè)技術(shù)學(xué)院高職單招語(yǔ)文歷年參考題庫(kù)含答案解析
- 2024年嘉興南洋職業(yè)技術(shù)學(xué)院高職單招語(yǔ)文歷年參考題庫(kù)含答案解析
- 2024年呼和浩特職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試歷年參考題庫(kù)含答案解析
- 2024年吉林工業(yè)職業(yè)技術(shù)學(xué)院高職單招語(yǔ)文歷年參考題庫(kù)含答案解析
- 2024年中考復(fù)習(xí)-數(shù)學(xué)(廣州專(zhuān)用)(解析版)
- 精細(xì)陶瓷 斷裂韌性試驗(yàn)方法 單邊V型切口梁法
- 2024年海峽出版發(fā)行集團(tuán)有限責(zé)任公司招聘筆試沖刺題(帶答案解析)
- 第三十六屆全國(guó)電力行業(yè)風(fēng)力發(fā)電運(yùn)行檢修職業(yè)技能競(jìng)賽基礎(chǔ)理論題庫(kù)附有答案
- 人教版三年級(jí)上冊(cè)數(shù)學(xué)期末測(cè)試卷a4版可打印
- 2024年紀(jì)檢監(jiān)察綜合業(yè)務(wù)知識(shí)題庫(kù)含答案(研優(yōu)卷)
- 科室醫(yī)療質(zhì)量與安全管理小組工作制度
- 歡樂(lè)喜劇人小沈陽(yáng)《四大才子招親大會(huì)》劇本投稿:程祅祆
- 中華民族共同體概論課件第五講大一統(tǒng)與中華民族共同體初步形成(秦漢時(shí)期)
- 初二生地會(huì)考試卷及答案-文檔
- 保險(xiǎn)公估服務(wù)行業(yè)發(fā)展史與現(xiàn)狀分析
評(píng)論
0/150
提交評(píng)論