标签:继承 rgs new 操作 out 使用 abs void sof
桥接模式:
桥接模式是将抽象部分与它的实现部分分离,使它们都可以独立地变化。
在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?如何利用面向对象的技术来使得该类型能够轻松的沿着多个方向进行变化,而又不引入额外的复杂度?这就要使用桥接模式。
优点:
桥接模式将继承关系转化为关联关系,降低了类于类之间的耦合度,降低了类的数量。
组成:
类图:
例子:
手机有不同的品牌,上面有很多软件,用程序实现,用不同的手机运行各种软件,怎么实现?像这种两个维度的就可以用桥接模式来解决。
代码:
public abstract class Phone { public Software software; abstract void run(); public void setSoftware(Software software) { this.software = software; } }
public class PhoneA extends Phone { @Override void run() { System.out.print("用A手机"); software.start(); } }
public class PhoneB extends Phone { @Override void run() { System.out.print("用B手机"); software.start(); } }
public interface Software { void start(); }
public class CameraSoftware implements Software { @Override public void start() { System.out.println("打开相机"); } }
public class GameSoftware implements Software { @Override public void start() { System.out.println("打开游戏"); } }
public class Client { public static void main(String[] args) { Software game = new GameSoftware(); Software camera = new CameraSoftware(); Phone phone1 = new PhoneB(); phone1.setSoftware(game); phone1.run(); Phone phone2 = new PhoneA(); phone2.setSoftware(camera); phone2.run(); } }
标签:继承 rgs new 操作 out 使用 abs void sof
原文地址:http://www.cnblogs.com/foreverYoungCoder/p/7866966.html