當前位置:首頁 » 編程語言 » java裝飾器模式

java裝飾器模式

發布時間: 2022-06-08 05:34:12

A. java中有多少種設計模式請簡單畫一下三種常見設計模式的類圖

總體來說設計模式分為三大類:

創建型模式,共五種:工廠方法模式、抽象工廠模式、單例模式、建造者模式、原型模式。

結構型模式,共七種:適配器模式、裝飾器模式、代理模式、外觀模式、橋接模式、組合模式、享元模式。

行為型模式,共十一種:策略模式、模板方法模式、觀察者模式、迭代子模式、責任鏈模式、命令模式、備忘錄模式、狀態模式、訪問者模式、中介者模式、解釋器模式。

其實還有兩類:並發型模式和線程池模式。用一個圖片來整體描述一下:

B. JAVA23種設計模式

一、大約分為三類:

1、創建型模式(5種):工廠方法模式,抽象工廠模式,單例模式,建造者模式,原型模式。

二、設計模式遵循的原則有6個:

1、開閉原則(Open Close Principle)

對擴展開放,對修改關閉。

2、里氏代換原則(Liskov Substitution Principle)

只有當衍生類可以替換掉基類,軟體單位的功能不受到影響時,基類才能真正被復用,而衍生類也能夠在基類的基礎上增加新的行為。

3、依賴倒轉原則(Dependence Inversion Principle)

這個是開閉原則的基礎,對介面編程,依賴於抽象而不依賴於具體。

4、介面隔離原則(Interface Segregation Principle)

使用多個隔離的借口來降低耦合度。

5、迪米特法則(最少知道原則)(Demeter Principle)

一個實體應當盡量少的與其他實體之間發生相互作用,使得系統功能模塊相對獨立。

6、合成復用原則(Composite Reuse Principle)

原則是盡量使用合成/聚合的方式,而不是使用繼承。繼承實際上破壞了類的封裝性,超類的方法可能會被子類修改。

C. 學Java 具體都有哪些

想要學好Java,需要有正確的學習路線,有堅持不懈的學習毅力,也需要有專業老師的指導,這樣才能學得更好。那麼,學習Java需要掌握哪些知識和技能呢?這里簡單列舉一些。

Java學習需要掌握的知識與技能:

1、Java SE部分初級語法,面向對象,異常,IO流,多線程,Java Swing,JDBC,泛型,註解,反射等。
2、資料庫部分,基礎的sql語句,sql語句調優,索引,資料庫引擎,存儲過程,觸發器,事務等。
3、前端部分, HTML5 CSS3 JS, HTML DOM Jquery BootStrap等。
4、Java EE部分,Tomcat和Nginx伺服器搭建,配置文件,Servlet,JSP,Filter,Listener,http協議,MVC等。
5、框架部分,每個框架都可以分開學,在去學如何使用SSM 或者SSH框架,如何搭建,如何整合。開發中為什麼會用框架,Rest是啥?Spring為啥經久不衰,底層如何實現等。
6、23種設計模式,掌握常用的,比如單例模式的多種實現,責任鏈模式,工廠模式,裝飾器模式等,了解常用場景。
7、基礎演算法和數據結構,八大排序演算法,查找演算法。
8、熟練使用maven等構建工具,git等版本控制工具,熟悉常用linux命令,log4j,bug,junit單元測試,日誌列印工具,Redis等NoSql。

互聯網行業目前還是最熱門的行業之一,學習IT技能之後足夠優秀是有機會進入騰訊、阿里、網易等互聯網大廠高薪就業的,發展前景非常好,普通人也可以學習。

想要系統學習,你可以考察對比一下開設有相關專業的熱門學校,好的學校擁有根據當下企業需求自主研發課程的能力,建議實地考察對比一下。

祝你學有所成,望採納。

D. java主要學習哪些內容

學習java是個不錯的選擇,java在it行業需求的人才每年占上百萬個,並且平均每個月薪資也是在1.8W左右。

如果想達到工作標准可以參考下面的內容:

1.Java SE部分 初級語法,面向對象,異常,IO流,多線程,Java Swing,JDBC,泛型,註解,反射等。

2.資料庫部分,基礎的sql語句,sql語句調優,索引,資料庫引擎,存儲過程,觸發器,事務等。

3. 前端部分, HTML5 CSS3 JS, HTML DOM Jquery BootStrap等。

4. Java EE部分,Tomcat和Nginx伺服器搭建,配置文件,Servlet,JSP,Filter,Listener,http協議,MVC等。

5. 框架部分,每個框架都可以分開學,在去學如何使用SSM 或者SSH框架,如何搭建,如何整合。開發中為什麼會用框架,Rest是啥?Spring為啥經久不衰,底層如何實現等。

6.23種設計模式,掌握常用的,比如單例模式的多種實現,責任鏈模式,工廠模式,裝飾器模式等,了解常用場景。

7. 基礎演算法和數據結構,八大排序演算法,查找演算法。

8. 熟練使用maven等構建工具,git等版本控制工具,熟悉常用linux命令,log4j,bug,junit單元測試,日誌列印工具,Redis等NoSql。

互聯網行業目前還是最熱門的行業之一,學習IT技能之後足夠優秀是有機會進入騰訊、阿里、網易等互聯網大廠高薪就業的,發展前景非常好,普通人也可以學習。

想要系統學習,你可以考察對比一下開設有相關專業的熱門學校,好的學校擁有根據當下企業需求自主研發課程的能力,能夠在校期間取得大專或本科學歷,中博軟體學院、南京課工場、南京北大青鳥等開設相關專業的學校都是不錯的,建議實地考察對比一下。

祝你學有所成,望採納。

E. 關於java中裝飾者模式的詳解,不理解啊,,誰給解釋解釋。。。

DataInputStreambis=newDataInputStream(newBufferedInputStream(newFileInputStream("File")));
BufferedInputStreambis2=newBufferedInputStream(newDataInputStream(newFileInputStream("File")));

BufferedInputStream添加了緩沖功能,請問,bis還有緩沖功能么?bis現在是DataInputStream類型的,bis2才是BufferedInputStream類型的,這是我學些IO的一個問題,為什麼bis還有緩沖功能?






問題:動態給一個對象添加一些額外的職責

思考:可以修改這個類的源代碼嗎?

回答:可以

思考:那直接修改源代碼就行了

問題:如果不可以修改呢?

思考:如果不可以修改源代碼,那怎麼添加?

回答:有一些類庫可以直接修改編譯後的class文件,但是這里不考慮

可以直接包含這個類的對象,如果這個類有實現某些介面,剛好某個需要添加額外智能的方法正好是其中一個方法,那就好辦了

Son這個類的paint()方法需要添加一些額外的功能

packagedecorator;
publicclassSonimplementsWork{
publicvoidpaint(){
System.out.println("兒子用鉛筆畫好了一幅畫。");
}
}

這個類不是實現了Work方法嗎?那就好辦了,新建一個類,繼承Work介面:

packagedecorator;
{
//被裝飾者
privateWorkwork;

publicMother(Workwork){
this.work=work;
}

privateMother(){}
publicvoidpaint(){

//媽媽裝飾者做的職責
System.out.println("媽媽正在做給畫上顏色前的准備工作。");

//被裝飾者做的職責
work.paint();

//媽媽裝飾者做的職責
System.out.println("媽媽給畫上好了顏色。");
}
}

那個所謂的Work介面:

packagedecorator;
publicinterfaceWork{
publicvoidpaint();
}

你不是想讓Son可以的paint方法多做點工作么?那我new出Mother類執行paint方法不就可以了嗎



看代碼就知道,其實這個裝飾器模式並不怎麼好用,每個需要裝飾的類或者需要繼承某個介面,這實在是一個限制


網上找的資料:

裝飾模式(Decorator)

裝飾模式又名包裝(Wrapper)模式。

裝飾模式以對客戶端透明的方式擴展對象的功能,是繼承關系的一個替代方案。

裝飾模式通過創建一個包裝對象,也就是裝飾,來包裹真實的對象。

裝飾模式以對客戶端透明的方式動態地給一個對象附加上更多的責任。換言之,客戶端並不會覺得對象在裝飾前和裝飾後有什麼不同。

裝飾模式可以在不創造更多子類的情況下,將對象的功能加以擴展。

裝飾模式把客戶端的調用委派到被裝飾類。裝飾模式的關鍵在於這種擴展是完全透明的。

裝飾模式的角色

抽象構件角色(Component):給出一個抽象介面,以規范准備接收附加責任的對象。

具體構件角色(Concrete Component):定義將要接收附加責任的類。

裝飾角色(Decorator):持有一個構件(Component)對象的引用,並定義一個與抽象構件介面一致的介面。

具體裝飾角色(Concrete Decorator):負責給構件對象「貼上」附加的責任。

Java IO中的裝飾模式

在IO中,具體構件角色是節點流,裝飾角色是過濾流。

FilterInputStream和FilterOutputStream是裝飾角色,而其他派生自它們的類則是具體裝飾角色。

裝飾模式的特點

裝飾對象和真實對象有相同的介面。這樣客戶端對象就可以以和真實對象相同的方式和裝飾對象交互。

裝飾對象包含一個真實對象的引用(reference)。

裝飾對象接收所有來自客戶端的請求,它把這些請求轉發給真實的對象。

裝飾對象可以在轉發這些請求之前或之後附加一些功能。

這樣就確保了在運行時,不用修改給定對象的結構就可以在外部增加附加的功能。

程序實例

publicinterfaceComponent
{
publicvoiddoSomething();

}

這是抽象構件角色,是一個介面。具體構件角色實現這個介面:


{

@Override
publicvoiddoSomething()
{
System.out.println("功能A");
}

}

裝飾角色:


{
privateComponentcomponent;

publicDecorator(Componentcomponent)
{
this.component=component;
}

@Override
publicvoiddoSomething()
{

component.doSomething();
}

}

其中包含了構件角色的引用,方法調用中利用構件角色的方法。

具體裝飾角色(兩個):


{
publicConcreteDecorator1(Componentcomponent)
{
super(component);
}

@Override
publicvoiddoSomething()
{
super.doSomething();

this.doAnotherThing();
}

privatevoiddoAnotherThing()
{
System.out.println("功能B");
}

}

{
publicConcreteDecorator2(Componentcomponent)
{
super(component);
}
@Override
publicvoiddoSomething()
{
super.doSomething();

this.doAnotherThing();
}

privatevoiddoAnotherThing()
{
System.out.println("功能C");
}

}

使用測試:

publicclassClient
{
publicstaticvoidmain(String[]args)
{
Componentcomponent=newConcreteComponent();

Componentcomponent1=newConcreteDecorator1(component);

component1.doSomething();
System.out.println("-----------");

Componentcomponent2=newConcreteDecorator2(component1);

component2.doSomething();
}

}

輸出:

功能A
功能B
-----------
功能A
功能B
功能C

F. java設計模式有哪些

注:以下內容為復制;

總體來說設計模式分為三大類:

創建型模式,共五種:工廠方法模式、抽象工廠模式、單例模式、建造者模式、原型模式。

結構型模式,共七種:適配器模式、裝飾器模式、代理模式、外觀模式、橋接模式、組合模式、享元模式。

行為型模式,共十一種:策略模式、模板方法模式、觀察者模式、迭代子模式、責任鏈模式、命令模式、備忘錄模式、狀態模式、訪問者模式、中介者模式、解釋器模式。

其實還有兩類:並發型模式和線程池模式

Java開發中的23種設計模式詳解

G. java問題 想問下 裝飾者模式有什麼實際用途呢能舉個實際應用的例子嗎

裝飾者模式用來擴展對象的功能,給對象添加不同的功能。在io流中,比如 BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream(new File("d:/text.txt")))); 這種對File類的包裝,由內層到外層擴展輸入流的功能,就是一個典型的裝飾者模式。inputstream是被裝飾對象,然後Fileinputstream、InputStream、BufferedReader都是它的裝飾器,用來擴展它的功能!

H. Java 代理模式和裝飾者模式的區別

代理模式與裝飾者模式看起來很像,都實現基礎對象實現的介面,在其自身對象中都保存著對被代理/被裝飾者的對象引用。
先來看看裝飾者模式的定義:動態的將責任附加到被裝飾者對象上,用於擴展對象的功能。比繼承的靈活性大。典型的如Java IO的設計即是裝飾者模式的典型應用。
代理模式模式的定義:對其他對象進行代理,以控制對被代理對象的訪問。Spring的為業務邏輯層方法生成的代理類,主要進行一些事務控制等。
由定義可以看出裝飾的責任是擴展功能 ,而代理主要控制訪問。
具體例子可參看Java IO裝飾/Spring的動態代理/Hibernate的代理等。

I. java常用的設計模式一共有多少種

1、正如上一位答主所言,java中存在23種面向對象的設計模式,分別是:
1)創建型模式,共五種:工廠方法模式、抽象工廠模式、單例模式、建造者模式、原型模式。
2)結構型模式,共七種:適配器模式、裝飾器模式、代理模式、外觀模式、橋接模式、組合模式、享元模式。
3)行為型模式,共十一種:策略模式、模板方法模式、觀察者模式、迭代子模式、責任鏈模式、命令模式、備忘錄模式、狀態模式、訪問者模式、中介者模式、解釋器模式。
2、他們遵從如下原則:
1)單一職責原則
2)里式替換原則
3)依賴倒置原則
4)介面隔離原則
5)迪米特法則
6)開閉原則
3、如果非要用幾個簡單的字來概括這繁雜的23種設計模式那就是「高內聚,低耦合」。
4、網路--23種設計模式,邊研究原理,邊敲代碼,其義自見。

J. java設計模式的兩大主題是什麼,

設計模式的兩大主題是系統復用與系統擴展。Java具有簡單性、面向對象、分布式、健壯性、安全性、平台獨立與可移植性、多線程、動態性等特點。Java可以編寫桌面應用程序、Web應用程序、分布式系統和嵌入式系統應用程序等。

(10)java裝飾器模式擴展閱讀

由四方面組成:

(1)Java編程語言

(2)Java類文件格式

(3)Java虛擬機

(4)Java應用程序介面

當編輯並運行一個Java程序時,需要同時涉及到這四種方面。使用文字編輯軟體(例如記事本、寫字板、UltraEdit等)或集成開發環境(Eclipse、MyEclipse等)在Java源文件中定義不同的類 ,通過調用類(這些類實現了Java API)中的方法來訪問資源系統,把源文件編譯生成一種二進制中間碼,。

存儲在class文件中,然後再通過運行與操作系統平台環境相對應的Java虛擬機來運行class文件,執行編譯產生的位元組碼,調用class文件中實現的方法來滿足程序的Java API調用。

熱點內容
壓縮板包裝 發布:2024-05-17 21:44:59 瀏覽:264
安卓大屏怎麼安裝手機卡 發布:2024-05-17 21:39:09 瀏覽:753
xml導入sql 發布:2024-05-17 21:34:13 瀏覽:526
蘋果x怎麼清除緩存 發布:2024-05-17 21:34:00 瀏覽:786
我的世界紅石怎麼卡伺服器 發布:2024-05-17 21:03:53 瀏覽:44
吃麵包解壓神器 發布:2024-05-17 20:50:32 瀏覽:336
木料方演算法 發布:2024-05-17 20:44:18 瀏覽:763
手機可以換內置存儲 發布:2024-05-17 20:31:37 瀏覽:745
泛型編程stl 發布:2024-05-17 20:26:34 瀏覽:934
傳智播客php韓順平 發布:2024-05-17 20:09:52 瀏覽:820