首先理解类模式与对象模式的定义:
类模式:处理类与子类的关系,关系通过继承建立,在编译时就被确定了,是静态的。
对象模式:处理对象之间的关系,这些关系在运行时变化,更具动态性。
工厂方法模式的定义中说,将类的实例化操作延迟到子类中完成。返回一个子类对象看似是对象型模式,但是我们来看看工厂方法模式的类图:
Factory Method将对象的部分创建工作延迟到子类,用户可以通过Creator的工厂方法参数化来决定自己要实例化的类对象,即当你的具体工厂创建以后你就知道了你的子类实例化,在编译时就已将确定是静态的。
通过课本的实例可以更好地理解:
HairTVFactory创建后他只能创建HairTV。
再来看看抽象工厂的类图:
抽象工厂, 可以通过抽象工厂中的一个抽象接口来对一系列相同风格的产品进行实例化, 当然各种不同风格的产品都对应一个抽象工厂, 只不过这些抽象工厂都有一个统一的接口, 那么用户则可以通过实例化一个抽象工厂(即先要得到抽象工厂的对象), 把用户想要的产品通过该对象的来实例化出来,通过抽象工厂来实例化产品是在程序运行期间决定的,他是动态的.
一个侧重类,一个侧重接口;一个在写类的代码时就决定了全部内容,一个只能在类的实例化时才能确定全部内容。
标签:对象,子类,模式,工厂,实例,抽象,为何 来源: https://www.cnblogs.com/fengchuiguobanxia/p/15616693.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。