• Effective Objective-C 2.0 — 第9条:以“类族模式”隐藏实现细节


    第9条:以“类族模式”隐藏实现细节

    • 类族模式可以把实现细节隐藏在一套简单的公共接口后面
    • 系统框架中经常使用类族
    • 从类族的公共抽象基类中继承子类时要当心,若有开发文档,则应首先阅读

    “类族”(class cluster) is a  模式(pattern),将实现细节隐藏在抽象基类后面,以保持接口间接

     Objective-C 的框架中普遍使用此模式。比如UIKit框架中 有一个 UIButton的类。

    + (UIButton *) buttonWithType:(UIButtonType)type;

    该方法返回的对象,其类型取决于传入的按钮类型。但它们都继承自同一个基类 : UIButton

    id maybeAnArray = /*...*/;
    if ([maybeAnArray class] == [NSArray class]) {
        //will never be hit
    }

    NSSArray 是个类族, 上述代码 if永远不能为真,,因为由 NSArray 的初始化方法所返回的那个实例其类型是隐藏在类族公共接口(public facade)后面的某个内部类型(internal type)

    若要判断某对象是否位于类族中,不要直接检测两个“类对象”是否相同,而应该采用下列代码:

    if ([maybeAnArray isKindOfClass:[NSArray class]])  {
                
    }

    如Cocoa中NSArray这样的类族 ,新增子类 需要遵守的规则:

    • 子类应带继承自类族中的抽象基类
    • 子类应该定义自己的数据存储方式
    • 子类应当复写超类文档中指明需要复写的方法
  • 相关阅读:
    jquery层级选择器学习笔记
    html 大于号 小于号 空格显示
    MySql存储过程二---变量
    MySql 存储过程一--基本语法及参数介绍
    MySql delimiter
    MySql 关联查询
    MySql 数据库导入导出
    markdown 换行
    WPF 之 MVVM
    对memtester源码分析
  • 原文地址:https://www.cnblogs.com/IDRI/p/5093191.html
Copyright © 2020-2023  润新知