在Java中,编写以下设计非常容易:
public abstract class Pizza { public static final Pizza.NULL = new Pizza() { /* "null" implementations */ } /* actual/abstract implmentations */ }
在Objective-C中获得相同效率场景的首选方法是什么?我一直无法找到关于这个主题的任何文档,我尝试了几个不同的场景static const
,#define
等等,但它们似乎都没有像上面的Java方法那样成功.
我想避免编写一个具有静态方法来获取单例实例的具体NullPizza类,因为它似乎更适合它作为最高级别接口的最终属性/字段.(披萨,在这种情况下.)
编辑:虽然我理解如何处理NULL模式由于Obj-C处理'nil'方法调用的独特方法,那么其他静态公共实例如Response.YES和Response.NO呢?(请参阅评论以供讨论.)
在Objective-C中不需要这种类型的模式,因为消息类的nil实例不被视为运行时错误.如果该方法具有已定义的返回类型,则从消息传递nil对象定义返回(例如,在传递nil对象时返回整数的方法返回0).