关于BitmapFactory与工厂设计模式的矛盾表述疑问求解
关于工厂模式与BitmapFactory的解惑
先拆解三个表述的正误:
表述(1)错误:工厂设计模式的核心并非“调用工厂类生成不同类的实例”,而是封装对象的创建逻辑,将对象的创建与使用分离。它的应用场景分两种:一种是生成同一抽象父类下的不同子类实例;另一种是仅生成单一类的实例,但把复杂的创建细节(比如Bitmap从不同来源的初始化、参数处理)封装在工厂类中,这同样符合工厂模式的设计思想。
表述(2)正确:
BitmapFactory完全遵循工厂设计模式。它对外提供了createBitmap()、decodeResource()、decodeFile()等统一接口,把Bitmap对象从内存、资源文件、本地文件等不同来源的创建细节全部封装在内部,调用方无需关心具体初始化逻辑,只需调用对应方法即可获取Bitmap实例。表述(3)正确:
BitmapFactory所有方法返回的都是Bitmap类的实例,不会生成其他类型的对象。
你之前的矛盾点源于对工厂模式定义的误解——只要工厂类承担了封装对象创建逻辑的职责,即使只生成单一类的实例,也属于工厂模式的范畴,所以(2)和(3)可以同时成立,问题出在表述(1)的定义过于片面。
内容的提问来源于stack exchange,提问作者Bosco Tsin
相关产品推荐
相关产品推荐

