栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

设计模式之外观模式(Java实现)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

设计模式之外观模式(Java实现)

Facade(外观) 一、意图

为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

二、结构

外观模式的结构如图7-35所示。

其中:
• Facade知道哪些子系统类负责处理请求;将客户的请求代理给适当的子系统对象。
• Subsystem classes实现子系统的功能;处理有Facade对象指派的任务;没有Facade的任何相关信息,即没有指向Facade的指针。

三、适用性

Facade模式适用于:
• 要为一个复杂子系统提供一个简单接口时,子系统往往因为不断演化而变得越来越复杂。大多数模式使用时都会产生更多更小的类,这使得子系统更具有可重用性,也更容易对子系统进行定制,但也给那些不需要定制子系统的用户带来一些使用上的困难。 Facade可以提供一个简单的默认视图,这一视图对大多数用户来说已经足够,而那些需要更多的可定制性的用户可以越过Facade层。
• 客户程序与抽象类的实现部分之间存在着很大的依赖性。引入Facade将这个子系统与客户以及其他的子系统分离,可以提高子系统的独立性和可移植性。
•当需要构建一个层次结构的子系统时,使用Facade模式定义子系统中每层的入口点。 如果子系统之间是相互依赖的,则可以让它们仅通过Facade进行通信,从而简化了它们之间的依赖关系。

四、实现

我们将创建一个 Shape 接口和实现了 Shape 接口的实体类。下一步是定义一个外观类 ShapeMaker。
ShapeMaker 类使用实体类来代表用户对这些类的调用。FacadePatternDemo 类使用 ShapeMaker 类来显示结果。

首先 创建一个接口。

interface Shape {
	void draw();
}

然后 创建实现接口的实体类。

class Rectangle implements Shape {
	 
	   @Override
	   public void draw() {
	      System.out.println("矩形被画出来了");
	   }
}

class Square implements Shape {
	 
	   @Override
	   public void draw() {
	      System.out.println("正方形被画出来了");
	   }
}
 
class Circle implements Shape {
	 
	   @Override
	   public void draw() {
	      System.out.println("圆被画出来了");
	   }
}

其次 创建一个外观类。

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();
	   }
}

最后 使用该外观类画出各种类型的形状。

public class Facade {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		ShapeMaker shapeMaker = new ShapeMaker();		 
	    shapeMaker.drawCircle();
	    shapeMaker.drawRectangle();
	    shapeMaker.drawSquare();  
	}

}

运行结果:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/981609.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号