1.现实问题 面向对象编程总是和现实问题的解决思想一致的。 汽车是如何产生的?这个问题在学习工厂模式中已经举过例子。我再重新分析一下,看看有何不同。 Factory模式中: 1.有一个抽象的工厂。 2.实现一个具体的工厂---汽车工厂。 3.工厂生产汽车A,得到汽车产品A。 4.工厂生产汽车B,得到汽车产品B。 这样做,实现了购买者和生产线的隔离。 Builder模式: 1.离合器工厂生产离合器产品,得到汽车部件A。 2.轮胎工厂生产轮子产品,得到汽车部件B。 3.车身工厂生产车身产品,得到汽车部件C。 4.将这些部件放到一起,形成刚好能够组装成一辆汽车的整体。 5.将这个整体送到汽车组装工厂,得到一个汽车产品。 或者更抽象一点理解: 1.将汽车的每一个零件都送到汽车组装工厂。 2.在工厂里,组装离合器,得到汽车部件A。 3.在工厂里,组装轮胎,得到汽车部件B。 4.在工厂里,组装车身,得到汽车部件C。 5.在工厂里,组装每个部件,得到一个汽车产品。 这样做,目的是为了实现复杂对象生产线和其部件的解耦。 二者不同在于: Factory模式不考虑对象的组装过程,而直接生成一个我想要的对象。 Builder模式先一个个的创建对象的每一个部件,再统一组装成一个对象。 Factory模式所解决的问题是,工厂生产产品。而Builder模式所解决的问题是工厂控制产品生成器组装各个部件的过程,然后从产品生成器中得到产品。 2.开阔天空 我在学习的时候,把代码例子认真的读了一遍,便豁然开朗。 学习模式的目的在于了解此模式究竟为何模式。了解了此模式的结构已足矣。给我的感觉,模式就是一种思想。学习一个模式,花上一两个小时把此模式的意思理解了,就够了。其精华的所在会在以后工作的设计中逐渐体现出来。 首先,当一个产品(对象)的创建过程很复杂的时候,且这个产品的实现需要分别实现几个不同的部件。这个时候,我们考虑用到Builder模式。具体实现过程的例子如下: Product: 复杂对象类。我们最终就是为了得到它的一个对象。我叫它产品。
Part: 复杂对象的部件接口。没准有几种。体现对象的复杂性。即产品部件。
欢迎来访!^.^! 本BLOG仅用于个人学习交流! 目的在于记录个人成长. 所有文字均属于个人理解. 如有错误,望多多指教!不胜感激!
Copyright © 久城