以前初學(xué)設(shè)計模式的時候總是分不清這兩個模式的區(qū)別,隨著編碼經(jīng)驗的增多同時看過一些書之后我慢慢的明白這兩個模式的區(qū)別了.
Builder模式是對創(chuàng)建物品的過程進(jìn)行的封裝,Brige模式是對實現(xiàn)方式的封裝.
這么一說,好像簡單了一些,其實隱藏在這兩個模式之后的原理都是一樣的.首先,把變化的部分抽取出來形成一個抽象類;其次,把這個抽象類中不變的操作抽取出來形成虛函數(shù)也就是常說的接口;再次,把這個抽象類以聚合指針或者引用的方式聚合在需要實用它們的類中,因為在C++中只有引用和指針才能有多態(tài)的行為.
雖然是不同的模式,原理還是一致的.類似上面那樣抽取變化和不變部分形成接口和抽象類從而形成模式的方法幾乎在任何一個模式中都有體現(xiàn),Statgy模式是對算法的封裝,Observer是對對象的封裝,Factory是對不同的創(chuàng)建的封裝,Iterator是對不同迭代器的封裝等等.
起初看設(shè)計模式的時候覺得很多模式都是一樣的,后來逐漸開竅了又覺得似乎還是有區(qū)別的,現(xiàn)在如果再以面向?qū)ο蟮幕镜脑瓌t來看各個模式的實現(xiàn)其實又是一樣的了.--只是,這個從不懂到開竅到慢慢明白的過程我花去了一年多的時間.