问题提出
生活中有很多事物集合,设为A1,A2......Am ,而每个事物都有功能F1,F2....Fn.
例如邮局的发送业务。简单模拟有两类事物:信件和包裹,均有平邮和挂号邮寄功能。程序设计中如何来描述这些功能呢?或许一般会与下面代码相似。
public class A1 { void F1(){} void F2(){} }
public class A2 { void F1(){} void F2(){} }
很明显,若有m个事物,n个功能,按照这个方法,一共要写m个类,功能方法累积起来有m*n个。这样明显不太可取。那么为了更好地解决上面的问题,桥接模式就是一种重要的方法之一。
桥接模式是关于怎样将抽象部分与它的实现部分相分离,使它们都可以独立地变化的成熟模式。上面的方法的根本缺陷就是在具体类中封装了F1()或是F2()方法。因此必定会有重复的代码。解决这个问题的重要策略就是利用“语义”,通过接口或者抽象类进行抽象。
对面上面的例子,可以描述为:
1)邮局有发送功能;发送功能有两种方式,平邮和挂号。
public interface IPost { // 邮局 public void post(); //发送功能 }
public class SimplePost implements IPost { //平信发送 public void post(){ System.out.println("This is simplePost"); } }
public class MarkPost implements IPost { //挂号发送 public void post(){ System.out.println("This is Mark post"); } }
View Code
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java设计模式:桥接模式 - Python技术站