美文网首页框架设计与设计模式
用OC认识设计模式(二)--结构型模式

用OC认识设计模式(二)--结构型模式

作者: 啊哈呵 | 来源:发表于2017-10-21 11:51 被阅读27次

用OC代码认识设计模式(一)--创建型模式
用OC代码认识设计模式(二)--结构型模式
用OC代码认识设计模式(三)--行为型模式
用OC代码认识六大设计原则

结构型模式

1、适配器模式

定义:将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
有两种类型:类适配器、对象适配器

(1)类适配器(Adapter)

IOS设计模式浅析之适配器模式(Adapter)
定义:类适配器是通过继承来适配两个接口,(OC没有多重继承,用协议)

Demo例子:

// Target.h 协议
@protocol Target <NSObject>
- (void)request;
@end
@implementation Adaptee
- (void)specificRequest
{
    NSLog(@"specificRequest");
}
// 适配对象,继承Adaptee类,现实Target协议
// Adapter.h
@interface Adapter : Adaptee<Target>
@end

 // Adapter.m
@implementation Adapter
- (void)request
{
    [self specificRequest];
}
@end

使用代码:

     Adapter *target = [[Adapter alloc] init]; 
     [target request];
(2)对象适配器

定义:对象适配器不继承被适配者,而是组合了一个对它的引用。

// Target.h 协议
@protocol Target <NSObject>
- (void)request;
@end
@implementation Adaptee
- (void)specificRequest
{
    NSLog(@"specificRequest");
}
// 适配对象,持有Adaptee对象,现实Target协议
// Adapter.h
@interface Adapter :<Target>
@property (nonatomic, strong) Adaptee *daptee;
@end

 // Adapter.m
@implementation Adapter
- (void)request
{
    [_adaptee specificRequest];
}
@end

使用代码:

    Adapter *target = [[Adapter alloc] init]; 
    target.abaptee = [[Adaptee alloc] init]; 
    [target request];

最后两者区别就是:一个是继承Adaptee类,一个是持有abaptee对象

2、桥接模式

定义:将抽象部分与它的实现部分分离,使它们都可以独立地变化

一般的设计模式


一般分类.png

当我们增加一个手机品牌HTC,按照品牌分类的话我们需要增加手机品牌类HTC,还需要增加两个手机软件类HTC的QQ、HTC的微信;同样,如果需要增加一个手机软件,那么按照手机软件分类的话,我们也是需要增加三个类。当我们需要增加更多的手机品牌和手机软件时,我们会发现类会越来越多,以致无法维护。

桥接的设计模式:

桥接模式.jpg

代码截图:

桥接模式.png
3、装饰器模式

装饰模式能动态的给一个对象添加一些额外的职责。就增加功能来说,装饰模式会比通过继承生成子类更为灵活。

OC的Category 就是装饰器模式的一种应用

4、组合模式

定义:将对象组合成树形结构以表示‘部分-整体’的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。
代码截图:

组合模式.png
5、外观模式

定义:外观模式要求一个子系统的外部与内部的通信必须通过一个统一的对象进行。外观模式提供一个高层次的接口,用来访问子系统中的一群接口。

代码截图:
绿框就是:提供一个高层次的接口,用来访问子系统中的一群接口


外观模式.png
6、享元模式

定义:运用共享技术有效地支持大量细粒度的对象。

OC代码:UITableViewCell 重用机制就是享元模式的典型应用
简单的代码:


享元模式.png
7、代理模式

定义:为其他对象提供一种代理以控制对这个对象的访问(这个和对象适配器模式差不多)
代码截图:

代理模式.png

相关文章

  • 用OC认识设计模式(二)--结构型模式

    用OC代码认识设计模式(一)--创建型模式用OC代码认识设计模式(二)--结构型模式用OC代码认识设计模式(三)-...

  • 用OC代码认识设计模式(三)--行为型模式

    用OC代码认识设计模式(一)--创建型模式用OC代码认识设计模式(二)--结构型模式用OC代码认识设计模式(三)-...

  • 用OC代码认识六大设计原则

    用OC代码认识设计模式(一)--创建型模式用OC代码认识设计模式(二)--结构型模式用OC代码认识设计模式(三)-...

  • 单例模式学习(OC,Swift,Java多角度学习)

    设计模式分为三大类:创建型、结构性、行为型 1、为什么用单例模式? OC编程习惯(Java编程习惯、Swift编程...

  • 第1章 设计模式概述

    一、设计模式的概念 二、设计模式的历史 三、设计模式的要素 四、设计模式的分类 ■ 创建型设计模式 ■ 结构型设计...

  • 开发之设计模式-单例模式

    设计模式 设计模式分为三大类:创建型、结构型、行为型在Java中有24中设计模式 创建型:单例 1、为什么用单例模...

  • 23种设计模式总结一

    23 种经典设计模式共分为 3 种类型,分别是创建型、结构型和行为型。 一、创建型设计模式 创建型设计模式包括:单...

  • 设计模式简单总结(待完善)

    设计模式简单总结 设计模式可以分为:创建型,结构型,行为型三种模式。 1 创建型模式 1.1 单例模式 用来指定某...

  • android常用设计模式

    26种设计模式 创建型设计模式[5] 单例模式,工厂模式,抽象工厂模式,建造模式,原型模式,[简单工厂模式] 结构...

  • 23种设计模式总结二

    23 种经典设计模式共分为 3 种类型,分别是创建型、结构型和行为型。 结构型设计模式 结构型模式就是一些类或对象...

网友评论

    本文标题:用OC认识设计模式(二)--结构型模式

    本文链接:https://www.haomeiwen.com/subject/uexiuxtx.html