第28条:通过协议提供匿名对象

协议定义了一系列的方法。

id类型将类的类型隐藏起来了,可以有多个不同的实现类。只在运行期才查出些对象的实际类型

可以用协议把API之中的实现细节隐藏起来,将返回的对象设计为遵从此协议的纯id类型(也叫“匿名类型”)。这个概念就称为“匿名对象”(anonymous object)。

例:

@property(nonatomic, weak) id<EOCDelegate> delegate;  // 1、用于属性

-(void)setObject:(id)object forKey:(id<NSCopying>)key;   // 2、用于函数参数

 

时间: 2025-01-04 08:38:56

第28条:通过协议提供匿名对象的相关文章

[Effective JavaScript 笔记]第28条:不要信赖函数对象的toString方法

js函数有一个非凡的特性,即将其源代码重现为字符串的能力. (function(x){ return x+1 }).toString();//"function (x){ return x+1}" 反射获取函数源代码的功能很强大,使用函数对象的toString方法有严重的局限性.toString方法的局限性ECMAScript标准对函数对象的toString方法的返回结果(即该字符串)并没有任何要求.这意味着不同的js引擎将产生不同的字符串,甚至产生的字符串与该函数并不相关. 如果函数

《Effective Objective-C 2.0》—(第23-28条)—类别、协议,代理,匿名对象、delegate

第23条:通过委托与数据源协议进行对象间通信 对象之间经常需要相互通信,而通信方式有很多.OC开发者广泛使用一种名叫"委托模式"(Delegate Pattern)的编程设计模式来实现对象间的通信,该模式的主旨是:定义一套接口,某对象若想接收另一个对象的委托,则需遵从此接口,以便称为"委托对象"(delegate).而这"另一个对象"则可以给其委托对象回传一些信息,也可以在发生相关联时间时通知委托对象. 此模式可以将数据与业务逻辑解耦. 在Obj

黑马程序员 11-OC匿名对象

———Java培训.Android培训.iOS培训..Net培训.期待与您交流! ——— 匿名变量:利用类创建一个对象的时候,没有将对象的地址交给一个指针变量保存,这样的对象称为匿名对象,即没有指针指向的对象. //匿名变量 1 #import <Foundation/Foundation.h> 2 //类的声明 3 @interface Car : NSObject 4 { 5 @public//表示允许外界指针间接访问对象的成员变量 6 int _speed;//速度 7 } 8 //方法

java匿名对象

java学习面向对象之匿名内部类 之前我们提到“匿名”这个字眼的时候,是在学习new对象的时候,创建匿名对象的时候用到的,之所以说是匿名,是因为直接创建对象,而没有把这个对象赋值给某个值,才称之为匿名. 匿名对象回顾: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 class NoObject {     void method()     {         System.out.println("Hello NoNam

匿名对象,封装,构造代码块、静态代码块、内部类、匿名内部类

匿名对象:没有引用类型变量指向的对象就称为匿名对象. 匿名对象的主要作用:简化书写 匿名对象主要用于两种应用场景: 1.如果一个对象的方法只会调用一次的时候,然后该对象就不再使用了,这时候就可以使用匿名对象 2.作为参数传递 封装的步骤: 1.私有化要封装的属性 2.根据需求提供对应的get或set方法 封装的好处: 1.提高了数据的安全性 2.操作简单 3.隐藏了实现 封装一定会用上的场景:如果是实体类的属性,在开发过程中,全部都会封装起来 构造代码块:创建一个对象的时候,给对象进行统一的初始

JAVA之旅(四)——面向对象思想,成员/局部变量,匿名对象,封装 , private,构造方法,构造代码块

JAVA之旅(四)--面向对象思想,成员/局部变量,匿名对象,封装 , private,构造方法,构造代码块 加油吧,节奏得快点了 1.概述 上篇幅也是讲了这点,这篇幅就着重的讲一下思想和案例 就拿买电脑来说吧,首先,你不懂电脑,你去电脑城买电脑,和大象装冰箱里一样,是什么步骤?咨询 砍价 ,谈妥了就那电脑走人,对吧,这就是面向过程的思想,而面向对象是:你有一个哥们,他懂电脑,什么都会,你只要带他去,就行,你这个哥们就是对象,在JAVA中,我们就是操作一个对象去完成各种各样的操作的,这就是面向对

面向对象_匿名对象

匿名对象使用方式一:当对对象的方法只调用一次时 可以使用匿名对象来完成 这样比较简化 如果对一个对象进行多个成员调用必须给这个对象取个名字 匿名对象使用方式二:可以将匿名对象作为实际参数进行传递 1 public class Object_Anonymity { 2 public static void main(String[] args) { 3 Car c=new Car(); 4 c.color="blue"; 5 c.run(); 6 7 //用匿名对象表示如下: 8 new

JAVA笔记2__类/封闭性/构造方法/方法的重载/匿名对象

public class Main { public static void main(String[] args) { Chicken c1 = new Chicken(); Chicken c2 = null; c1.eat(); System.out.println(c1.age); c2 = c1; c2.eat(); } } class Chicken{ int color; char sex; int age; void eat(){ System.out.println("chik

面向对象基础——构造方法与匿名对象

什么是构造方法? 只要有一个对象实例化则就会调用构造方法. 在构造方法中要注意以下几点: -构造方法的名称必须与类名一致 -构造方法的声明处不能有任何返回值类型的声明 -不能在构造方法中使用return返回一个值. class Person{ public Person(){ // 声明构造方法 System.out.println("一个新的Person对象产生.") ; } }; public class ConsDemo01{ public static void main(St