Java设计模式菜鸟系列(九)外观模式建模与实现

Java设计模式菜鸟系列(九)外观模式建模与实现

大家好,又见面了,我是全栈君。

转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39805735


外观模式(Facade):是为了解决类与类之间的依赖关系的,像spring一样。能够将类与类之间的关系配置到配置文件里,而外观模式就是将他们的

关系放在一个Facade类中,减少了类与类之间的耦合度,该模式中没有涉及到接口。

一、uml建模:

Java设计模式菜鸟系列(九)外观模式建模与实现


二、代码实现:

/**
 * 演示样例:外观模式,也称门面模式
 * 
 * 长处:为了解决类与类之间的依赖关系。减少了类与类之间的耦合度
 * 
 * 该模式中没有涉及到接口
 */

class Memory {
	public void startup() {
		System.out.println("this is memory startup...");
	}

	public void shutdown() {
		System.out.println("this is memory shutdown...");
	}

}

class CPU {
	public void startup() {
		System.out.println("this is CPU startup...");
	}

	public void shutdown() {
		System.out.println("this is CPU shutdown...");
	}
}

/**
 * 作为facade。持有Memory、CPU的实例
 * 
 * 任务让Computer帮咱们处理,我们无需直接和Memory、CPU打交道
 * 
 * 这里有点像去商店里买东西:咱们买东西仅仅须要到商店去买,而无需去生产厂家那里买。
 * 
 * 商店就能够称为是一个facade外观(门面)模式。--> 商品都在商店里
 */
class Computer {
	private Memory memory;
	private CPU cpu;

	public Computer() {
		memory = new Memory();
		cpu = new CPU();
	}

	public void startup() {
		System.out.println("begin to start the computer...");
		memory.startup();
		cpu.startup();
		System.out.println("computer start finished...");
	}

	public void shutdown() {
		System.out.println("begin to close the computer...");
		memory.shutdown();
		cpu.shutdown();
		System.out.println("computer close finished...");
	}
}

/**
 * client測试类
 * 
 * @author Leo
 */
public class Test {
	public static void main(String[] args) {
		Computer computer = new Computer();
		computer.startup();
		System.out.println("\n");
		computer.shutdown();
	}
}

三、总结

假设我们没有Computer类,那么。CPU、Memory他们之间将会相互持有实例,产生关系,这样会造成严重的依赖,改动一个类,可能会带来其它类的改动。这不是咱们想要看到的,有了Computer类。他们之间的关系被放在了Computer类里,这样就起到了解耦的作用,这就是外观Facade模式。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/116114.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • JavaScript 设计模式之组合模式

    JavaScript 设计模式之组合模式引我们知道地球和一些其他行星围绕着太阳旋转,也知道在一个原子中,有许多电子围绕着原子核旋转。我曾经想象,我们的太阳系也许是一个更大世界里的一个原子,地球只是围绕着太阳原子的一个电子。而我身上的每个原子又是一个星系,原子核就是这个星系中的恒星,电子是围绕着恒星旋转的行星。一个电子中也许还包含了另一个宇宙,虽然这个宇宙还不能被显微镜看到,但我相信它的存在。也许这个想法有些异想天开,但在程序设计中,…

    2022年7月12日
    18
  • 设计模式之原型(prototype)模式

    相信大多数的人都看过《西游记》,对孙悟空拔毛变出小猴子的故事情节应该都很熟悉。孙悟空可以用猴毛根据自己的形象复制出很多跟自己一模一样的小猴兵出来,其实在设计模式中也有一个类似的模式,我们可以通过一个原

    2021年12月28日
    45
  • JAVA设计模式之享元模式

    解释一下概念:也就是说在一个系统中如果有多个相同的对象,那么只共享一份就可以了,不必每个都去实例化一个对象。比如说一个文本系统,每个字母定一个对象,那么大小写字母一共就是52个,那么就要定义52个对象。如果有一个1M的文本,那么字母是何其的多,如果每个字母都定义一个对象那么内存早就爆了。那么如果要是每个字母都共享一个对象,那么就大大节约了资源。  在Flyweight模式中,由于要产生各种各样

    2022年3月11日
    50
  • JAVA设计模式之抽象工厂模式

    本文属于23种设计模式系列。继续前面简单工厂模式和工厂方法模式的例子,以汽车配件制造介绍抽象工厂模式。

    2022年3月11日
    42
  • php常用几种设计模式的应用场景

    php常用几种设计模式的应用场景

    2021年11月6日
    37
  • 设计模式之职责链模式

    相信大家都玩过类似于“斗地主”的纸牌游戏,某人出牌给他的下家,下家看看手中的牌,如果要不起,则将出牌请求转发给他的下家,其下家再进行判断。一个循环下来,如果其他人都要不起该牌,则最初的出牌者可以打出新

    2021年12月28日
    63

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号