zoukankan      html  css  js  c++  java
  • 常用设计模式——结构型

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6515719.html

    一:外观模式

    即:把一系列的类用一个门面类包含起来,不同的客户类需要使用该门面类中某个类的方法时,无需详细地通过类名.方法()来调用了,直接 门面.方法()即可。实际上在门面类中的方法也是通过具体的类.方法()来实现的。只不过把这一步包装了起来,不让门面外的类直接接触核心的功能类罢了。

    SubSystem:子系统类,根据单职责原则,一个子系统类实现一个专门的功能

    facade:外观角色类,其内部包含各种子系统类对象,并定义了一系列与外界交互的方法,而方法中则是通过子系统类对象调用方法来实现的。

    通过门面来组合各个单职责的功能类,组成一个系统;而外部类则通过门面类这个统一的入口来调用系统内的功能,降低了客户与子系统类的耦合度,更好地保护了系统内容的安全性。

    各个子系统(灯、风扇、空调、电视)等都有开、关方法,在总开关类对象中定义的开、关方法分别调用了以上子系统的开关函数,从而实现通过总开关即可一一操控各子系统的开关。

    二:适配器模式

    三头插座——适配器——二孔插槽

    适配者类——适配器类——客户类

     适配器模式(Adapter Pattern) :将一个接口转换成客户希望的另一个接口,适配器模式使接口不兼容的那些类可以一起工作。

    Target:接口,定义了一系列客户端需要使用的方法;

    Adaptee:实际工作的类,有一系列的工作方法;

    Adapter:适配器类,实现了Target接口,继承了Adaptee类,在实现接口中方法时调用继承过来的具体方法。

    Client:客户端,通过适配器对象调用方法;(实际上是适配器对象调用了适配者的方法)

    Target:“接口类,一个具体的类,进行规范的制定,定义了一系列客户端需要调用的方法;

    Adaptee:实际工作的类,有一系列的工作方法;

    Adapter:适配器类,继承自接口类,并拥有一个adaptee成员对象,重写继承来的各个函数,在其中通过adaptee对象调用适配者类的方法。

    Client:客户端,通过适配器对象调用方法;(实际上是适配器对象调用了适配者的方法)

     

    (思维放宽:适配器中调用的可以不只是一个适配者的方法!当应用需要一个同一的接口类,通过这个类对象的各种规范性接口获得、操作来自不同类的属性时,不妨采用适配器模式,在适配器中定义一系列的操作方法,在方法中通过各种适配者对象调用方法即可达到以一操作多的目的

    适配器提供的是一个统一的接口,而适配者的不同则会造成不同的调用效果。比如数据库操作接口,Sun公司的JDBC提供了一个统一的接口来制定操作规范,而各大数据库厂商(Mysql/Oracle等)则通过适配器来实现官方接口,而内部则通过厂商自己的类来实现对数据库的一些列操作。

  • 相关阅读:
    NetBeans + Struts + Hibernate 入门教程
    The Perils of JavaSchools
    Java 2 EE 开发初体验
    五周年记
    MySQL Workbench 介绍
    JAVA语言学校的危险性
    娱乐无处不在 Sun工程师惊天发现:大吼可致硬盘潜伏期激增
    争什么?
    spring cloud使用zuul实现反向代理和负载均衡
    spring cloud 网管篇zuul
  • 原文地址:https://www.cnblogs.com/ygj0930/p/6515719.html
Copyright © 2011-2022 走看看