原文連接
譯者:smallclover
但願對你們有所幫助!Thanks for your watchingjava
門面模式隱藏系統的複雜性同時會提供一個接口給用戶,使得用戶能夠使用該系統。這種類型的設計模式屬於結構型模式的一種,它將會添加一個接口到現有的系統當中,用戶經過該接口使用系統,從而隱藏了系統的複雜性。
該模式涉及一個單獨的類,該類會向客戶提供簡單的方法而且代替用戶去調用那些在系統中存在的類的方法。這樣用戶就不會接觸到系統是如何實現的,從而隱藏了系統的複雜性。設計模式
實現ide
咱們將建立一個Shape接口,而且建立具體的類實現它。接下來咱們須要聲明一個門面類ShapeMaker。
ShapeMaker類代替用戶去調用這些具體的類。FacadePatternDemo,咱們的demo類將經過使用ShapeMaker類來展現這些結果。spa
建立一個接口。
Shape.java設計
public interface Shape { void draw(); }
建立具體的類實現Shape接口。
Rectangle.javacode
public class Rectangle implements Shape { @Override public void draw() { System.out.println("Rectangle::draw()"); } }
Square.javahtm
public class Square implements Shape { @Override public void draw() { System.out.println("Square::draw()"); } }
Circle.javablog
public class Circle implements Shape { @Override public void draw() { System.out.println("Circle::draw()"); } }
建立一個門面類。接口
ShapeMaker.javaip
public class ShapeMaker { private Shape circle; private Shape rectangle; private Shape square; public ShapeMaker() { circle = new Circle(); rectangle = new Rectangle(); square = new Square(); } public void drawCircle(){ circle.draw(); } public void drawRectangle(){ rectangle.draw(); } public void drawSquare(){ square.draw(); } }
使用門面類畫各類各樣的圖形。
FacadePatternDemo.java
public class FacadePatternDemo { public static void main(String[] args) { ShapeMaker shapeMaker = new ShapeMaker(); shapeMaker.drawCircle(); shapeMaker.drawRectangle(); shapeMaker.drawSquare(); } }
第五步
校驗輸出
Circle::draw() Rectangle::draw() Square::draw()