zoukankan      html  css  js  c++  java
  • iOS设计模式

    iOS设计模式 - 桥接

    示意图

    说明

    1. 桥接模式为把抽象层次结构从实现中分离出来,使其可以独立变更,抽象层定义了供客户端使用的上层抽象接口,实现层次结构定义了供抽象层次使用的底层接口,实现类的引用被封装于抽象层的实例中,桥接就形成了.

    2. 桥接模式可以解决具有功能类似但又不完全相同的某种功能架构,为了能让实现更加灵活.

    源码

    https://github.com/YouXianMing/iOS-Design-Patterns

    //
    //  ConsoleController.h
    //  GameBoy
    //
    //  Created by YouXianMing on 15/7/26.
    //  Copyright (c) 2015年 YouXianMing. All rights reserved.
    //
    
    #import <Foundation/Foundation.h>
    #import "ConsoleEmulator.h"
    
    @interface ConsoleController : NSObject
    
    /**
     *  抽象模拟器
     */
    @property (nonatomic, strong) ConsoleEmulator  *emulator;
    
    /**
     *  执行指令
     *
     *  @param command 指令
     */
    - (void)excuteCommand:(ConsoleCommand)command;
    
    @end
    //
    //  ConsoleController.h
    //  GameBoy
    //
    //  Created by YouXianMing on 15/7/26.
    //  Copyright (c) 2015年 YouXianMing. All rights reserved.
    //
    
    #import <Foundation/Foundation.h>
    #import "ConsoleEmulator.h"
    
    @interface ConsoleController : NSObject
    
    /**
     *  抽象模拟器
     */
    @property (nonatomic, strong) ConsoleEmulator  *emulator;
    
    /**
     *  执行指令
     *
     *  @param command 指令
     */
    - (void)excuteCommand:(ConsoleCommand)command;
    
    @end
    //
    //  ConsoleEmulator.h
    //  GameBoy
    //
    //  Created by YouXianMing on 15/7/26.
    //  Copyright (c) 2015年 YouXianMing. All rights reserved.
    //
    
    #import <Foundation/Foundation.h>
    
    typedef enum : NSUInteger {
        
        kConsoleCommandUp,
        kConsoleCommandDown,
        kConsoleCommandLeft,
        kConsoleCommandRight,
        
        kConsoleCommandSelect,
        kConsoleCommandStart,
        
        kConsoleCommandAction1,
        kConsoleCommandAction2,
        
    } ConsoleCommand;
    
    @interface ConsoleEmulator : NSObject
    
    /**
     *  加载指令
     *
     *  @param command 指令
     */
    - (void)loadInstructionsForCommand:(ConsoleCommand)command;
    
    /**
     *  执行指令
     */
    - (void)excuteInstructions;
    
    @end
    //
    //  ConsoleEmulator.m
    //  GameBoy
    //
    //  Created by YouXianMing on 15/7/26.
    //  Copyright (c) 2015年 YouXianMing. All rights reserved.
    //
    
    #import "ConsoleEmulator.h"
    
    @implementation ConsoleEmulator
    
    - (void)loadInstructionsForCommand:(ConsoleCommand)command {
        
        // 由子类重载实现
    }
    
    - (void)excuteInstructions {
        
        // 由子类重载实现
    }
    
    @end

    分析

    桥接模式伦理图

    其实,就是抽象的管理类管理一个抽象的执行类,通过一个方法或者多个方法来让抽象执行类完成功能,这就是传说中的桥接模式

  • 相关阅读:
    QT源码解析(七)Qt创建窗体的过程,作者“ tingsking18 ”(真正的创建QPushButton是在show()方法中,show()方法又调用了setVisible方法)
    C++与QML混合编程实现2048
    Qt Resource系统概说(资源压缩不压缩都可以)
    QML动画概述(几十篇相关博客)
    凤年读史27:普鲁士vs德意志
    DIP、IoC、DI以及IoC容器
    WebService和AngularJS实现模糊过滤查询
    详解SpringMVC请求的时候是如何找到正确的Controller
    .NET MVC学习之模型绑定
    Unit Of Work-工作单元
  • 原文地址:https://www.cnblogs.com/YouXianMing/p/4681186.html
Copyright © 2011-2022 走看看