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

类簇模式把实现细节隐藏在一套简单的公共接口(抽象基类)后面。以保持接口简洁,用户无须自己创建子类实例,只需调用基类方法创建即可。

例如:UIButton 的 buttonWithType:

工厂模式是创建类簇的办法之一。

OC中的系统框架中普通使用此模式。

  大部分collection类都是类簇。

判断实例所属的类型信息:

  isMemberOfClass:    是否在相同类中,不含子类。

  isKindOfClass:     判断某对象是否位于类簇(基类和子类)中。

时间: 2024-08-10 16:14:13

第9条:以“类簇模式”隐藏实现细节的相关文章

第27条:使用“class-continuation分类”隐藏实现细节

Objective-C动态消息系统(参见第11条)的工作方式决定了其不可能实现真正的私有方法或私有实例变量. 匿名分类的特点: 与普通的分类不同,它必须定义在其所接续的那个类的实现文件里. 唯一能声明实例变量的分类. 而该分类没有特定的实现文件,其中的方法都应该定义在类的主实现文件里. 用法: 1.向类中新增实例变量. 2.在里面声明私有方法. 3.隐藏类所遵循的协议. 4.将主接口声明的“只读”属性弄成“可读写”

OC中的类簇的使用和初始化方法中属性的使用

今天遇到了几个和字符串相关的内存问题,和大家分享一下 NSString *name = [[NSString alloc]initWithString:@"张三"];NSLog(@"%d",[name retainCount]); 这两行代码的打印结果是-1, NSString * aString = [[NSString alloc] initWithFormat:@"123"]; NSLog(@"%d",aString.r

《Effective Java 第二版》学习笔记 第13条 使类和成员的可访问性最小化

第四章 类和接口 第13条 使类和成员的可访问性最小化 1.设计良好的模块会隐藏所有的实现细节,把它的API与实现清晰的隔离开来,模块之间只通过它们的API进行通信,一个模块不需要知道其他模块的内部工作情况:即信息隐藏或封装,是软件设计的基本原则之一. 2.Java提供了许多机制来协助信息隐藏.访问控制(access control)机制决定了类.接口和成员的可访问性(accessibility). 3.第一规则:尽可能地使每个类或者成员不被外界访问.或者说在保证功能的情况下,使用最小的访问级别

工厂设计模式的探讨——iOS类簇的应用分析

工厂设计模式的探讨--iOS类簇的应用分析 一.何为设计模式 什么是设计模式,先来看段度娘的话: 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计模式于己于他人于系统都是多赢的:设计模式使代码编制真正工程化:设计模式是软件工程的基石脉络,如同大厦的结构一样. 其实我们不需要这么专业,在我的理解,设计模式就是一种规范化的编程习惯,养成了这样的思想与习惯,

iOS开发-类簇(Class Cluster)

类簇(Class  Cluster)是定义相同的接口并提供相同功能的一组类的集合,仅公开接口的抽象类也可以称之为类簇的公共类,每个具体类的接口有公共类的接口抽象化,并隐藏在簇的内部.这些类一般不能够直接使用,一般都是由公共类的子类来实现,可以称之为私有子类.看概念会觉得有点枯燥,其实最常用的NSString就是一个类簇,不过看起来不明显,比较明显的是NSNumber,numberWithInt,numberWithDouble,这些方法其实在调用NSNumber的时候父类实例化私有子类,返回对应

iOS 类簇(Class Cluster)使用心得

我们都知道在iOS中类簇的使用是非常普遍的,比如NSNumber.NSString.NSArray等等都是类簇.我们以NSNumber举例来说,对于int,bool, unsigned int 等等数据类型,我们如何把它们封装成类的形式呢? 通常情况下我们可能会想到,对于每一种数据类型独立封装成一个类,比如对于int 类型我们可以做一个NSInt的类,以此类推.这样想是正确的,但是,我们再来想想这样会有什么问题呢?当需要支持的数据类型越来越多时,这些类也会相应的越来越多,那么对于开发者来说,我们

"类工厂模式"改写SqlHelper

看到标题您一定很疑惑,23种经典设计模式什么时候多了一个"类工厂模式",稍等,请听我慢慢道来. 实践是检验真理的唯一途径.最近用了"类工厂模式"改写了我公司的SqlHelper类,改写了一大半了,拿出半成品和大家一起讨论. 首先说下我们公司环境:我公司在ABC三地都有工厂,同时都有各自的DB.经过调研,ABC三地的很多网页都有可有整合在一起的地方,我负责整合三地网页. 一开始,没接触设计模式的时候.我的Sql是这样写的:"select * from &qu

设计模式大类--行为模式(上)

大概有10中行为模式,分为上中下三篇.一.Template(模板)描述:定义一些操作算法的骨架,将其实现延迟到其子类好处:扩展性强 例子:Java的抽象类本来就是Template模式,因此使用很普遍.而且很容易理解和使用,我们直接以示例开始: public abstract class Benchmark{ /** * 下面操作是我们希望在子类中完成 */ public abstract void benchmark(); /** * 重复执行benchmark次数 */ public fina

iOS 8:【转】类簇在iOS开发中的应用

源地址:http://limboy.me/ios/2014/01/04/class-cluster.html 类簇(class cluster)是一种设计模式,在Foundation Framework中被广泛使用,举个简单的例子 NSArray *arr = [NSArray arrayWithObjects:@"foo",@"bar", nil]; NSLog(@"arr class:%@", [arr class]); // output: