parte abstracta y un modo de puente para lograr una cierta separación. Tal que las dos partes separadas de extensión.
modo de puente es el modo de estrategia similar, excepto que una serie de algoritmos que algoritmo de modelo de política de paquete puede ser reemplazado con uno al otro.
modo de Estrategia de alcanzar la parte abstracta y separación parcial se puede variar de forma independiente.
Puente paquete de importación ( "FMT" ) Tipo de interfaz {// seleccionar una ruta Camino Camino () Cadena } escribir Trans {// transporte seleccionado interfaz de Transporte () Cadena } escribir Resault struct {// crear un puente, puede haber varias combinaciones camino de la manera Trans Trans } // función de puente FUNC HowtoSchool (camino camino, Trans Trans) * Resault { retorno {& Resault manera: camino, Trans: Trans, } } FUNC (el presente Resault *) GotoSchool () { fmt.Println ( "el Elija "this.way.Way (), this.trans.Transport ()," ") a la Escuela } // instanciar una ruta struct {tipo WAY1 } método del Esquema 1 // darse cuenta de cómo obtener func (esto * WAY1 ) Camino () {string retorno" [WAY1] " } // seleccionar una ruta, una ruta de retorno del Ejemplo 1 FUNC ChooseWay1 () {camino de retorno y WAY1 {} } // instantiate Esquema 2 Tipo de Way2 struct { } El método del Esquema 2 // darse cuenta de cómo llegar FUNC (el presente Way2 *) camino String () { return "[Way2]" } // 2 seleccionar una ruta, un ejemplo de ruta de regreso 2 FUNC ChooseWay2 () camino { return & Way2 {} } // caminar instantiate a la escuela estructura tipo paseo { } // seleccione caminar a la escuela, devuelve una instancia caminar FUNC ChooseWalk () Trans { return & paseo {} } // métodos implementados paseo FUNC (al este paseo *) Transporte () cadena { retorno "[pie]" } // caminar a la escuela ejemplos de la estructura de tipo de bicicletas { } // eligen caminar a la escuela, devuelve una instancia caminar ChooseBike FUNC () Trans { retorno {} y la bici } // métodos para lograr paseo FUNC (* la presente bicicletas) Transporte () {Cadena retorno "[Bicicleta]" }
Cómo: = bridge.HowtoSchool (bridge.ChooseWay1 (), bridge.ChooseWalk ()) how.GotoSchool () cómo = bridge.HowtoSchool (bridge.ChooseWay2 (), bridge.ChooseWalk ()) how.GotoSchool () cómo = puente .HowtoSchool (bridge.ChooseWay1 (), bridge.ChooseBike ()) how.GotoSchool () cómo = bridge.HowtoSchool (bridge.ChooseWay2 (), bridge.ChooseBike ()) how.GotoSchool ()