1. 程式人生 > 實用技巧 >2、介面卡 adapter 模式 加個"介面卡" 以便於複用 結構型設計模式

2、介面卡 adapter 模式 加個"介面卡" 以便於複用 結構型設計模式

1

3

12100AC,?使AC10012Adapter,.....西AC12100()

使使AdapterAdapterWrapperWrapper 西使西

Adapter

(使) (使)

Adapter

2

Banner,.


packagecn.design.adapter;

/**
*@authorlin
*@version1.0
*@date2020-07-1411:21
*@DescriptionTODO
*/
publicclassBanner{

privateStringstring;

publicBanner(Stringstring){
this.string=string;
}

publicvoidshowWithParen(){
System.out.println("("+string+")");
}

publicvoidshowWithAster(){
System.out.println("*"+string+"*");
}
}

Print,

packagecn.design.adapter;

/**
*@authorlin
*@version1.0
*@date2020-07-1411:24
*@DescriptionTODO
*/
publicinterfacePrint{
publicabstractvoidprintWeak();

publicabstractvoidprintStrong();

}

2.1

PrintBanner, BannerPrint.

packagecn.design.adapter;

/**
*@authorlin
*@version1.0
*@date2020-07-1411:25
*@DescriptionTODO
*/
publicclassPrintBannerextendsBannerimplementsPrint{

publicPrintBanner(Stringstring){
super(string);
}

@Override
publicvoidprintWeak(){
showWithParen();
}

@Override
publicvoidprintStrong(){
showWithAster();
}
}

Main

packagecn.design.adapter;

/**
*@authorlin
*@version1.0
*@date2020-07-1411:26
*@DescriptionTODO
*/
publicclassMain1{
publicstaticvoidmain(String[]args){
PrintBannerp1=newPrintBanner("helloworld");
p1.printWeak();
p1.printStrong();
}
}

:

(helloworld)
*helloworld*

2.2

BasePrint

packagecn.design.adapter;

/**
*@authorlin
*@version1.0
*@date2020-07-1411:24
*@DescriptionTODO
*/
publicabstractclassBasePrint{
publicabstractvoidprintWeak();

publicabstractvoidprintStrong();

}

PrintBanner2BasePrint

packagecn.design.adapter;

/**
*@authorlin
*@version1.0
*@date2020/7/1422:10
*@DescriptionTODO
*/
publicclassPrintBanner2extendsBasePrint{
Bannerbanner;

publicPrintBanner2(Stringstring){
this.banner=newBanner(string);
}

@Override
publicvoidprintWeak(){
banner.showWithParen();
}

@Override
publicvoidprintStrong(){
banner.showWithAster();
}
}

Main2

packagecn.design.adapter;

/**
*@authorlin
*@version1.0
*@date2020/7/1422:11
*@DescriptionTODO
*/
publicclassMain2{
publicstaticvoidmain(String[]args){
PrintBanner2p2=newPrintBanner2("main2");
p2.printWeak();
p2.printStrong();
}
}

(main2)
*main2*

3


Target()

12Print(使)Print(使)

Client ()

使Target 12Main

Adaptee ()

Adapt-er ()Adapt-ee ()Adaptee-100BannerAdapteeTarget(使12),Adapter

Adapter ()

Adapter使Adaptee滿Target Adapter AdapterAdapter 10012PrintBannerAdapter使AdapteeAdapter使Adaptee

4使

使?使Adapter?使Adapter?

Bug

Adapter便BugBug( Adaptee)調Adapter

5

1

2privatenewClassName()使(//)

3.,滿ocp,


圈~

注公眾號