java-设计模式(结构型)-【外观模式】

1.外观模式(Facade)

最少知道原则:一个类应该尽可能少的与其他类发生相互作用,使类相对独立,系统功能模块相对独立。

定义:减少类与类之间的依赖关系,就像Spring一样,可以将类和类之间的关系配置到配置文件中。

而外观模式则是将它们类之间的关系放入一个Facade类中,降低类与类之间的耦合度,该模式没有涉及接口。

 2.图解

public class Computer {

	//各个部件(类)
	private CPU cpu=new CPU();
	private Memory m=new Memory();
	private Disk   d=new Disk();
	public static void main(String[] args) {
		// TODO Auto-generated method stub
         Computer cp=new Computer();
         cp.start();
         cp.shutdown();
	}
	//电脑启动
    public void start()
    {
      cpu.start();
      m.start();
      d.start();
  	  System.out.println("电脑启动完毕");
    }
    //电脑关闭
    public void shutdown ()
    {
      cpu.shutdown();
      m.shutdown();
      d.shutdown();
  	  System.out.println("电脑完成关闭");
    }
}
class CPU
{
      public void start()
      {
    	  System.out.println("cpu启动...");
      }
      public void shutdown ()
      {
    	  System.out.println("cpu关闭...");
      }
}
class Memory
{
    public void start()
    {
  	  System.out.println("内存启动...");
    }
    public void shutdown ()
    {
  	  System.out.println("内存关闭...");
    }
}
class Disk
{
    public void start()
    {
  	  System.out.println("硬盘启动...");
    }
    public void shutdown ()
    {
  	  System.out.println("硬盘关闭...");
    }
}

  运行结果:

cpu启动...
内存启动...
硬盘启动...
电脑启动完毕
cpu关闭...
内存关闭...
硬盘关闭...

  

时间: 2024-10-10 20:30:55

java-设计模式(结构型)-【外观模式】的相关文章

java设计模式--结构型模式--外观模式

1 外观模式 2 概述 3 为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用. 4 5 6 适用性 7 1.当你要为一个复杂子系统提供一个简单接口时.子系统往往因为不断演化而变得越来越 8 复杂.大多数模式使用时都会产生更多更小的类.这使得子系统更具可重用性,也更容 9 易对子系统进行定制,但这也给那些不需要定制子系统的用户带来一些使用上的困难. 10 Facade可以提供一个简单的缺省视图,这一视图对大多数用户来说已经足够,而那些需

《Java设计模式》之外观模式

外观模式(Facade pattern)涉及到子系统的一些类.所谓子系统,是为提供一系列相关的特征(功能)而紧密关联的一组类.例如,一个Account类.Address类和CreditCard类相互关联,成为子系统的一部分,提供在线客户的特征. 在真实的应用系统中,一个子系统可能由很多类组成.子系统的客户为了它们的需要,需要和子系统中的一些类进行交互.客户和子系统的类进行直接的交互会导致客户端对象和子系统(Figure1)之间高度耦合.任何的类似于对子系统中类的接口的修改,会对依赖于它的所有的客

Java设计模式11:外观模式

外观模式 外观模式是对象的结构模式,外部与一个子系统的通信必须通过一个统一的外观对象进行.外观模式是一个高层次的接口,使得子系统更易于使用. 医院的例子 现代的软件系统都是比较复杂的.假如把医院比作一个子系统,按照部门职能,这个系统划分为挂号.门诊.划价.化验.收费.取药等.看病的人要与这些部门打交道,就如同一个子系统的客户端与一个子系统的各个类打交道一样,不是一件容易的事. 解决这种不便的方法便是引入外观模式,医院可以设置一个接待员的位置,由接待员负责代为挂号.划价.缴费.取药等.病人只需要接

java设计模式之九外观模式(Facade)

外观模式是为了解决类与类之家的依赖关系的,像spring一样,可以将类和类之间的关系配置到配置文件中,而外观模式就是将他们的关系放在一个Facade类中,降低了类类之间的耦合度,该模式中没有涉及到接口,看下类图:(我们以一个计算机的启动过程为例) 我们先看下实现类: [java] view plaincopy public class CPU { public void startup(){ System.out.println("cpu startup!"); } public vo

java设计模式 GOF23 10 外观模式

一.外观模式简介 外观模式是为了解决类与类之间的依赖关系,这种模式将类与类之间的关系放到一个Facade类中,从而降低类与类之间的耦合. 二.简单代码实现 package com.lz.facade; /* * 外观模式 * 门面对象 */ public class RegisterFacade { public void register() { new 南京工商局().checkName(); new 南京税务局().taxCertificata(); } } package com.lz.

java设计模式--结构型模式--组合模式

什么是组合模式,这个有待研究,个人觉得是各类组合而形成的一种结构吧. 组合模式: 1 组合模式 2 概述 3 将对象组合成树形结构以表示"部分-整体"的层次结构."Composite使得用户对单个对象和组合对象的使用具有一致性." 4 5 6 适用性 7 1.你想表示对象的部分-整体层次结构. 8 9 2.你希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象. 10 11 12 参与者 13 1.Component 14 为组合中的对象声明接

java设计模式--结构型模式--享元模式

享元模式 概述 运用共享技术有效地支持大量细粒度的对象. 适用性 当都具备下列情况时,使用Flyweight模式: 1.一个应用程序使用了大量的对象. 2.完全由于使用大量的对象,造成很大的存储开销. 3.对象的大多数状态都可变为外部状态. 4.如果删除对象的外部状态,那么可以用相对较少的共享对象取代很多组对象. 5.应用程序不依赖于对象标识.由于Flyweight对象可以被共享,对于概念上明显有别的对象,标识测试将返回真值. 参与者 1.Flyweight 描述一个接口,通过这个接口flywe

java设计模式--结构型模式--装饰模式

1 装饰模式 2 概述 3 动态地给一个对象添加一些额外的职责.就增加功能来说,Decorator模式相比生成子类更为灵活. 4 5 6 适用性 7 1.在不影响其他对象的情况下,以动态.透明的方式给单个对象添加职责. 8 9 2.处理那些可以撤消的职责. 10 11 3.当不能采用生成子类的方法进行扩充时. 12 参与者 13 1.Component 14 定义一个对象接口,可以给这些对象动态地添加职责. 15 16 2.ConcreteComponent 17 定义一个对象,可以给这个对象添

java设计模式--结构型模式--桥接模式

1 桥接模式 2 概述 3 将抽象部分与它的实现部分分离,使它们都可以独立地变化. 4 5 6 适用性 7 1.你不希望在抽象和它的实现部分之间有一个固定的绑定关系. 8 例如这种情况可能是因为,在程序运行时刻实现部分应可以被选择或者切换. 9 10 2.类的抽象以及它的实现都应该可以通过生成子类的方法加以扩充. 11 这时Bridge模式使你可以对不同的抽象接口和实现部分进行组合,并分别对它们进行扩充. 12 13 3.对一个抽象的实现部分的修改应对客户不产生影响,即客户的代码不必重新编译.

设计模式-结构型-组合模式

组合模式(Composite): 定义: 组合模式又叫部分整体模式,它是一种将对象组合成树状的层次结构模式,用来表示"部分-整体"的关系,使用户对单个对象和组合对象具有一致的访问性. 组合模式的角色: 1)抽象构建(Component):它的主要作用是为树叶构件和树枝构件声明公共接口,并实现它们的默认行为.在透明式的组合模式中抽象构件还声明访问和管理子类的接口:在安全式的组合模式中不声明访问和管理子类的接口,管理工作由树枝构件完成. 2)树叶构件(Leaf):是组合中的叶节点对象,它没