策略模式的抽象层(可以是接口、抽象类)仅仅定义了一个算法接口,而建造者模式的抽象层则已经定义好了步骤。
比如:你打CS根据不同情况,选择不同的枪(AWP,沙鹰,AK47),造成不同的“行为”,此处可以用策略模式分开,这三种强在算法上是不同类的,只是在协议上(比如JAVA接口)目标是一致的,都是枪。而在具体“创建”每种枪的时候,可以用builder模式,比如沙鹰也有红色沙鹰、白色沙鹰,首先根据多态区分客户端到底要那种沙鹰(当然你就一种沙鹰也可以用builder模式创建,但策略模式就一种可选择的情况就完全没有意义了),builder模式主要关注“创建”不同的沙鹰的时,设置名字、伤害、射程等具体参数(一般是创建过程较复杂的实例才用bulider,而且一般常用"变种builder模式")……
主要就是bulider关注点在“创建”实例时,不同实例设置不同的参数。strategy关注点在于根据情况,选择不同“行为”即应该选用那类实例。
我上午不是答过你么:区别还是比较明显的吧,Builder的目的是希望用同样的生产过程,根据不同的生产者得到不同的产品。而外观模式则是将多个对象组合起来,它不需要生产者,也不需要得到不同的结果。有点象虚函数和普通函数的区别。