外觀模式的目的是為類的調(diào)用提供一個(gè)統(tǒng)一的接口,用戶只需要通過這個(gè)接口就可以實(shí)現(xiàn)內(nèi)部復(fù)雜類的方法,無須詳細(xì)了解內(nèi)部復(fù)雜類的具體實(shí)現(xiàn)方式,降低系統(tǒng)調(diào)用的復(fù)雜度。
下例仍以畫圖形為例說明外觀模式的用法。Shape接口類有兩個(gè)實(shí)現(xiàn)類Circle和Rectangle,其內(nèi)部具體的畫圓和畫矩形可能較為復(fù)雜,為此,設(shè)計(jì)了一個(gè)外觀類ShapeMaker,通過ShapeMaker類的調(diào)用就可以實(shí)現(xiàn)畫圓和畫矩形的功能,用戶完全不需要了解Circle和Rectangle類的內(nèi)容代碼。
外觀模式常用于應(yīng)用程序的對(duì)外接口設(shè)計(jì),通過設(shè)計(jì)一個(gè)外觀類,不了解應(yīng)程序內(nèi)部代碼的人也可以輕松應(yīng)用程序的相關(guān)功能,有利于程序的模塊化設(shè)計(jì)。
Shape接口類:
package facade;
public interface Shape {
public void draw();
}
Circle實(shí)現(xiàn)類:
package facade;
public class Circle implements Shape{
@Override
public void draw() {
System.out.println("畫圓形");
}
}
Rectangle實(shí)現(xiàn)類:
package facade;
public class Rectangle implements Shape{
@Override
public void draw() {
System.out.println("畫矩形");
}
}
ShapeMaker外觀類:
package facade;
public class ShapeMaker {
private Shape circle;
private Shape rectangle;
public ShapeMaker() {
circle=new Circle();
rectangle=new Rectangle();
}
public void circleDraw() {
circle.draw();
}
public void rectangleDraw() {
rectangle.draw();
}
}
主函數(shù)調(diào)用方式:
package main;
import facade.*;
public class FacadePattern {
public static void main(String[] args) {
ShapeMaker shapeMaker=new ShapeMaker();
shapeMaker.circleDraw();
shapeMaker.rectangleDraw();
}
}
-
printf函數(shù)
+關(guān)注
關(guān)注
0文章
31瀏覽量
5923
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
基于FPGA的I2C SLAVE模式總線的設(shè)計(jì)方案
百靈鳥電路的設(shè)計(jì)方案
一種實(shí)用的單片機(jī)雙CPU設(shè)計(jì)方案及其應(yīng)用
關(guān)于 避障 小車 的設(shè)計(jì)方案
【資料分享】STM32設(shè)計(jì)方案與示例分享 第一波
車載顯示技術(shù)及其應(yīng)用方案~
基于單片機(jī)控制的開關(guān)電源及其設(shè)計(jì)方案
STM32設(shè)計(jì)方案與示例分享
變頻器有哪些設(shè)計(jì)方案?
一種實(shí)用的單片機(jī)雙CPU設(shè)計(jì)方案及其應(yīng)用
耳溫槍設(shè)計(jì)方案設(shè)計(jì)
并網(wǎng)逆變器的設(shè)計(jì)方案
芯片設(shè)計(jì)公司ARM推出了新的授權(quán)模式,嘗試不同的芯片設(shè)計(jì)方案
![芯片設(shè)計(jì)公司ARM推出了新的授權(quán)<b class='flag-5'>模式</b>,嘗試不同的芯片<b class='flag-5'>設(shè)計(jì)方案</b>](https://file.elecfans.com/web1/M00/9E/62/pIYBAF02cLyAC_rYAAAdULzZ6io439.png)
評(píng)論