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

spoc课程网站建设建网站要定制还是第三方系统

spoc课程网站建设,建网站要定制还是第三方系统,在线图片编辑助手,东莞轨道公司Go和Java实现适配器模式 我们通过下面的实例来演示适配器模式的使用#xff0c;其中#xff0c;音频播放器设备只能播放 mp3 文件#xff0c;通过使用一个更高级 的音频播放器来播放 vlc 和 mp4 文件。 1、适配器模式 适配器模式是作为两个不兼容的接口之间的桥梁。这种…Go和Java实现适配器模式 我们通过下面的实例来演示适配器模式的使用其中音频播放器设备只能播放 mp3 文件通过使用一个更高级 的音频播放器来播放 vlc 和 mp4 文件。 1、适配器模式 适配器模式是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式它结合了两个独立接口的 功能。 这种模式涉及到一个单一的类该类负责加入独立的或不兼容的接口功能。举个真实的例子读卡器是作为内存卡 和笔记本之间的适配器。您将内存卡插入读卡器再将读卡器插入笔记本这样就可以通过笔记本来读取内存卡。 意图将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作 的那些类可以一起工作。 主要解决主要解决在软件系统中常常要将一些现存的对象放到新的环境中而新环境要求的接口是现对 象不能满足的。 何时使用1、系统需要使用现有的类而此类的接口不符合系统的需要。 2、想要建立一个可以重复使用的 类用于与一些彼此之间没有太大关联的一些类包括一些可能在将来引进的类一起工作这些源类不一定有 一致的接口。 3、通过接口转换将一个类插入另一个类系中。比如老虎和飞禽现在多了一个飞虎在不 增加实体的需求下增加一个适配器在里面包容一个虎对象实现飞的接口。 如何解决继承或依赖推荐。 关键代码适配器继承或依赖已有的对象实现想要的目标接口。 应用实例1、美国电器 110V中国 220V就要有一个适配器将 110V 转化为 220V。 2、JAVA JDK 1.1 提供 了 Enumeration 接口而在 1.2 中提供了 Iterator 接口想要使用 1.2 的 JDK则要将以前系统的 Enumeration 接口转化为 Iterator 接口这时就需要适配器模式。 3、在 LINUX 上运行 WINDOWS 程序。 4、JAVA 中的 jdbc。 优点1、可以让任何两个没有关联的类一起运行。 2、提高了类的复用。 3、增加了类的透明度。 4、灵活性 好。 缺点1、过多地使用适配器会让系统非常零乱不易整体进行把握。比如明明看到调用的是 A 接口其 实内部被适配成了 B 接口的实现一个系统如果太多出现这种情况无异于一场灾难。因此如果不是很有必 要可以不使用适配器而是直接对系统进行重构。 2.由于 JAVA 至多继承一个类所以至多只能适配一个适 配者类而且目标类必须是抽象类。 使用场景有动机地修改一个正常运行的系统的接口这时应该考虑使用适配器模式。 注意事项适配器不是在详细设计时添加的而是解决正在服役的项目的问题。 适用性 你想使用一个已经存在的类而它的接口不符合你的需求。 你想创建一个可以复用的类该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协 同工作。 (仅适用于对象Adapter)你想使用一些已经存在的子类但是不可能对每一个都进行子类化以匹配它们的接 口对象适配器可以适配它的父类接口。 2、Go实现适配器模式 package adapter// adapter type MediaPlayerAdapter interface {Play(string) }package adapterimport fmt// mp3 type Mp3Player struct { }func (mp3Player *Mp3Player) PlayMp3(fileName string) {fmt.Println(Playing Mp3 File: , fileName) }package adapter// mp3 adapter type Mp3PlayerAdapter struct {Mp3Player }func (mp3PlayerAdapter *Mp3PlayerAdapter) Play(fileName string) {mp3PlayerAdapter.Mp3Player.PlayMp3(fileName) }package adapterimport fmt// mp4 type Mp4Player struct { }func (mp4Player *Mp4Player) PlayMp4(fileName string) {fmt.Println(Playing Mp4 File: , fileName) }package adapter// mp4 adapter type Mp4PlayerAdapter struct {Mp4Player }func (mp4PlayerAdapter *Mp4PlayerAdapter) Play(fileName string) {mp4PlayerAdapter.Mp4Player.PlayMp4(fileName) }package adapterimport fmt// vlc type VlcPlayer struct { }func (vlcPlayer *VlcPlayer) PlayVlc(fileName string) {fmt.Println(Playing Vlc File: , fileName) }package adapter// vlc adapter type VlcPlayerAdapter struct {VlcPlayer }func (vlcPlayerAdapter *VlcPlayerAdapter) Play(fileName string) {vlcPlayerAdapter.VlcPlayer.PlayVlc(fileName) }package constantconst (Mp3 mp3Mp4 mp4Vlc vlc )package adapterimport (proj/constant )// adapter factory type PlayerFactory struct { }func (playerFactory *PlayerFactory) CreatePlayerAdapter(playerType string) MediaPlayerAdapter {switch playerType {case constant.Mp3:return Mp3PlayerAdapter{Mp3Player: Mp3Player{}}case constant.Mp4:return Mp4PlayerAdapter{Mp4Player: Mp4Player{}}case constant.Vlc:return VlcPlayerAdapter{VlcPlayer: VlcPlayer{}}}return nil }package mainimport (. proj/adapterproj/constant )func main() {// 工厂类playerFactory : PlayerFactory{}// mp3mp3PlayerAdapter : playerFactory.CreatePlayerAdapter(constant.Mp3)// Playing Mp3 File: qs.mp3mp3PlayerAdapter.Play(qs.mp3)// mp4mp4PlayerAdapter : playerFactory.CreatePlayerAdapter(constant.Mp4)// Playing Mp4 File: qs.mp4mp4PlayerAdapter.Play(qs.mp4)// vlcvlcPlayerAdapter : playerFactory.CreatePlayerAdapter(constant.Vlc)// Playing Vlc File: qs.vlcvlcPlayerAdapter.Play(qs.vlc)}下面再实现一个例子对适配器模式进行介绍。 笔记本通过读卡器去读取 TF 卡和 SD 卡。 package adapter// SDCard type SDCard interface {ReadSD() }package adapterimport fmt// SDCardImpl type SDCardImpl struct { }func (sDCardImpl *SDCardImpl) ReadSD() {fmt.Println(sdcard read msg!) }package adapter// TFCard type TFCard interface {ReadTF() }package adapterimport fmt// TFCardImpl type TFCardImpl struct { }func (tFCardImpl *TFCardImpl) ReadTF() {fmt.Println(tfcard read msg!) }package adapter// SDAdapterTF || SDCardImpl type SDAdapterTF struct {TFCard }func (sDAdapterTF *SDAdapterTF) ReadSD() {sDAdapterTF.TFCard.ReadTF() }package adapter// Computer type Computer interface {ReadSD(SDCard) }package adapter// ComputerImpl type ComputerImpl struct { }func (computerImpl *ComputerImpl) ReadSD(sDCard SDCard) {sDCard.ReadSD() }package mainimport . proj/adapterfunc main() {computer : ComputerImpl{}// sdcard// sdcard read msg!computer.ReadSD(SDCardImpl{})sDAdapterTF : SDAdapterTF{TFCard: TFCardImpl{}}// tfcard// tfcard read msg!computer.ReadSD(sDAdapterTF) }3、Java实现适配器模式 package com.adapter;// adapter public interface MediaPlayerAdapter {void play(String fileName); }package com.adapter;// mp3 public class Mp3Player {public void playMp3(String fileName){System.out.println(Playing Mp3 File: fileName);} }package com.adapter;// mp3 adapter public class Mp3PlayerAdapter implements MediaPlayerAdapter {private Mp3Player mp3Player new Mp3Player();Overridepublic void play(String fileName) {mp3Player.playMp3(fileName);} }package com.adapter;// mp4 public class Mp4Player {public void playMp4(String fileName){System.out.println(Playing Mp4 File: fileName);} }package com.adapter;// mp4 adapter public class Mp4PlayerAdapter implements MediaPlayerAdapter{private Mp4Player mp4Player new Mp4Player();Overridepublic void play(String fileName) {mp4Player.playMp4(fileName);} }package com.adapter;// vlc public class VlcPlayer {public void PlayVlc(String fileName){System.out.println(Playing Vlc File: fileName);} }package com.adapter;// vlc adapter public class VlcPlayerAdapter implements MediaPlayerAdapter{private VlcPlayer vlcPlayer new VlcPlayer();Overridepublic void play(String fileName) {vlcPlayer.PlayVlc(fileName);} }package com.adapter;public enum PlayerType {MP3, MP4, VLC; }package com.adapter;// adapter factory public class PlayerFactory {public MediaPlayerAdapter createPlayerAdapter(PlayerType playerType){switch (playerType){case MP3:return new Mp3PlayerAdapter();case MP4:return new Mp4PlayerAdapter();case VLC:return new VlcPlayerAdapter();}return null;} }package com.adapter;public class Test {public static void main(String[] args) {MediaPlayerAdapter mediaPlayerAdapter;// 工厂类PlayerFactory playerFactory new PlayerFactory();// mp3mediaPlayerAdapter playerFactory.createPlayerAdapter(PlayerType.MP3);// Playing Mp3 File: sq.mp3mediaPlayerAdapter.play(sq.mp3);// mp4mediaPlayerAdapter playerFactory.createPlayerAdapter(PlayerType.MP4);// Playing Mp4 File: sq.mp4mediaPlayerAdapter.play(sq.mp4);// vlcmediaPlayerAdapter playerFactory.createPlayerAdapter(PlayerType.VLC);// Playing Vlc File: sq.vlcmediaPlayerAdapter.play(sq.vlc);} }下面再实现一个例子对适配器模式进行介绍。 笔记本通过读卡器去读取 TF 卡和 SD 卡。 package com.adapter;// SDCard public interface SDCard {void readSD(); }package com.adapter;// SDCardImpl public class SDCardImpl implements SDCard {Overridepublic void readSD() {System.out.println(sdcard read msg!);} }package com.adapter;// TFCard public interface TFCard {void readTF(); }package com.adapter;// TFCardImpl public class TFCardImpl implements TFCard{Overridepublic void readTF() {System.out.println(tfcard read msg!);} }package com.adapter;// SDAdapterTF || SDCardImpl public class SDAdapterTF implements SDCard{private TFCard tfCard new TFCardImpl();Overridepublic void readSD() {tfCard.readTF();} }package com.adapter;// Computer public interface Computer {void readSD(SDCard sdCard); }package com.adapter;// ComputerImpl public class ComputerImpl implements Computer{Overridepublic void readSD(SDCard sdCard) {sdCard.readSD();} }package com.adapter;public class Test {public static void main(String[] args) {Computer computer new ComputerImpl();// sdcardSDCard sdCard new SDCardImpl();// sdcard read msg!computer.readSD(sdCard);// tfcardSDAdapterTF sdAdapterTF new SDAdapterTF();// tfcard read msg!computer.readSD(sdAdapterTF);} }
http://www.pierceye.com/news/495786/

相关文章:

  • 卧龙区网站建设找做牙工作上哪个网站
  • 做网站的会计分录广州公司注册需要什么条件
  • 小米4路由器可以做网站嘛服务类网站建设服务公司
  • 电子商务网站建设规划书实例注册微信公众平台
  • 网站设计课程总结线上营销方案
  • 谷城网站建设网站集群建设实施方案
  • 怎么做外贸生意谷歌seo服务
  • 做网站好还是做淘宝好市场调研模板
  • 网站做换肤做一个平台费用是多少
  • 省内注销二建 建设部网站更新慢网站建设合同书封皮
  • 天津城市建设网站营销型网站的好处
  • 网站建设维护文档好看的页面
  • 网站搜索优化官网网站建设在电子商务中的作用的看法
  • 网站推广费用价格html大屏展示模板
  • 编辑网站用什么软件网站开发人员职责
  • 网站搜索引擎提交wordpress发布站点
  • 阳春网站建设天水网站seo
  • 仙桃市建设局网站wordpress链接前面的图标
  • 温州市城乡建设建档案馆网站公司装修费用可以一次性入账吗
  • 房地产开发公司网站宠物网页设计模板
  • 网站备案信息可以改吗中国做二手房最大的网站
  • 设计 企业网站罗湖网站-建设深圳信科
  • 太原自助模板建站手机版电脑qq登录入口
  • 公司网站建设哪家比较好app 网站
  • 建设银行个人网站打不开个人主页模板下载
  • 山西建设公司网站wordpress视频适应手机端
  • 原型样网站做一般的公司门户网站投资额
  • 南宁百度网站公司电话网站配置优化
  • 德州网站建设的公司免费注册公司怎么注册
  • 成都开发网站建设中国建设规划采购网站