当前位置: 首页 > wzjs >正文

大型网站建设哪家快泉州网站建设-泉州网站建设

大型网站建设哪家快,泉州网站建设-泉州网站建设,广西建设网官网证书查询,鞍山58同城二手房文章目录 简介问题解决方案示例代码总结 简介 也称:门面模式、Facade。外观是一种结构型设计模式,能为程序库、框架或其他复杂类提供一个简单的接口。 问题 假设你必须在代码中使用某个复杂的库或框架中的众多对象。正常情况下,你需要负责…

文章目录

  • 简介
  • 问题
  • 解决方案
  • 示例
  • 代码
  • 总结

简介

也称:门面模式、Facade。外观是一种结构型设计模式,能为程序库、框架或其他复杂类提供一个简单的接口。

问题

假设你必须在代码中使用某个复杂的库或框架中的众多对象。正常情况下,你需要负责所有对象的初始化工作、管理他们的依赖关系并且按正确的顺序执行方法等等。
最终,程序里类的业务逻辑会和第三方类的实现细节紧密耦合,让我们理解和维护代码的工作很难进行下去。

解决方案

外观类为包含许多活动部件的复杂子系统提供了一个简单的接口。跟直接调用子系统相比,外观提供的功能可能比较有限,但它却包含了客户端真正关心的功能。
如果你的程序需要和包含几十种功能的复杂库整合,但是只需要使用里面非常少的功能,那么使用外观模式就会非常方便。

示例

上传小猫的搞笑短视频到社交网站的应用可能会用到专业的视频转换库,但它只需使用一个包含encode­(filename, format)方法(以文件名与文件格式为参数进行编码的方法)的类就可以了。在创建这个类并且把它连接到视频转换库之后,你就拥有了自己的第一个外观类。
外观模式简化了客户端和复杂视频转换框架之间的交互。
使用单个外观类隔离多重依赖

你可以创建一个封装所需功能 并且隐藏其他代码的外观类,从而不需要让全部代码直接跟数十个框架类进行交互。这个结构还能把 未来三方框架升级或更换所造成的影响 最小化,因为你只需要修改程序中外观方法的实现。

代码

// 视频文件抽象(第三方类模拟)
class VideoFile {private String filename;public VideoFile(String name) { this.filename = name;}public String getCodecType() {// 伪代码提取类型逻辑return filename.contains(".ogg") ? "ogg" : "unknown";}
}// 编解码抽象
interface CompressionCodec {}
class MPEG4CompressionCodec implements CompressionCodec {}  // MP4编解码
class OggCompressionCodec implements CompressionCodec {}    // Ogg编解码// 编解码工厂实现(提取逻辑)
class CodecFactory {public static CompressionCodec extract(VideoFile file) {String type = file.getCodecType();return type.equals("ogg") ? new OggCompressionCodec() : null;}
}// 码率处理组件(转换逻辑)
class BitrateReader {public static VideoFile read(String filename, CompressionCodec codec) {System.out.println("解码原始文件: " + filename);return new VideoFile(filename);}public static VideoFile convert(VideoFile buffer, CompressionCodec codec) {System.out.println("转换编码格式: " + codec.getClass().getSimpleName());return new VideoFile(buffer + "_converted");}
}// 音频混合组件(后处理步骤)
class AudioMixer {public VideoFile fix(VideoFile result) {System.out.println("标准化音频轨道");return new VideoFile(result + "_mixed");}
}/* 核心外观类(完整转换流程封装) */
class VideoConverter {public File convert(String filename, String format) {VideoFile file = new VideoFile(filename);CompressionCodec sourceCodec = CodecFactory.extract(file);  // 源编码识别// 目标编码选择(条件分支)CompressionCodec destinationCodec;if (format.equalsIgnoreCase("mp4")) {destinationCodec = new MPEG4CompressionCodec();} else {destinationCodec = new OggCompressionCodec();}// 转换处理链条(标准流程)VideoFile buffer = BitrateReader.read(filename, sourceCodec);VideoFile intermediateResult = BitrateReader.convert(buffer, destinationCodec);VideoFile finalResult = new AudioMixer().fix(intermediateResult);return new File(finalResult.toString());}
}// 客户端调用(典型使用示例)
public class VideoApplication {public static void main(String[] args) {VideoConverter converter = new VideoConverter();File mp4File = converter.convert("presentation.ogg", "mp4");mp4File.save();}
}

总结

在这里插入图片描述

  1. 外观(Facade):提供了一种访问特定子系统功能的便捷方式,它知道怎么重定向客户端请求,以及怎么操作一切活动的部件。
  2. 创建附加外观(Addi­tion­al Facade)类可以避免多种不相关的功能污染单一外观,导致它变成又一个复杂结构。客户端和其他外观都可以使用附加外观。
  3. 复杂子系统(Com­plex Sub­sys­tem):由数十个不同对象构成。如果要用这些对象完成有意义的工作,你必须深入了解子系统的实现细节,比如按照正确顺序初始化对象、以及为它提供正确格式的数据。子系统类不会意识到外观的存在,它们在系统内运作并且相互之间可以直接进行交互。
  4. 客户端(Client)使用外观代替对子系统对象的直接调用。
http://www.dtcms.com/wzjs/816847.html

相关文章:

  • 柳州网站推广哪家好wordpress源代码下载
  • 沈阳网站关键字优化珠海企业网站建设费用
  • 推广网站的网址和网鱼相匹配子夜免费观看
  • 银川网站建设那家公司比较好织梦网站首页是哪个文件
  • 张家口建设局网站wordpress主题修改软件
  • 王野天女演员葛优照片烟台网站建设优化
  • 站长网站提交原神网页制作素材
  • 网站建设培训东莞手机网站开发 视频
  • 软件开发模型是对软件开发过程的一种规范描述惠州短视频seo
  • 做一些网站的弹出页面高校建设网站的特色
  • wordpress 加密网站优化推广是什么
  • wordpress建站苏州做营销网站设计
  • 公司网站能自己做么免费查看采购信息的平台
  • 合肥微信网站制作网站关键词选择
  • 做一个一般的网站需要多少钱wordpress 内容 插件
  • 深圳做营销网站建设可以分销的平台
  • 邢台提供网站建设公司哪家好政务服务中心网站建设实施方案
  • 网站后台上传附件海外推广营销
  • 网站做cnzz流量统计网站建设与管理教程
  • 网站开发学院百度网页版入口
  • 昆明建设网站制作网站开发技术要学什么
  • 龙象建设集团有限公司网站内部网站 建设方案
  • 无锡锡山住房和城乡建设局网站自动推广软件免费
  • 学校网站建设总结做免费看电影的网站不违法吗
  • 做简历网站 39wordpress减压完成后
  • 黄村网站开发公司营销型网站建设哪家便宜
  • 上海模板建站平台晋江网站建设价格多少
  • 做教育网站挣钱网站备案填了虚假座机能过吗
  • 布吉建设网站聚名网域名注册
  • 百度搜索不到网站网页设计制作个人主页欣赏