桥接模式

    xiaoxiao2021-03-25  89

    参考《设计模式的艺术软件开发人员内功修炼之道》-刘伟 著

    实验目的

    桥接模式通过对象之间关联的方式,在主对象中可以访问多种关联对象

    实验代码

    package BridgeMode; interface DataSource{ public String readData(); } class DBSource implements DataSource{ @Override public String readData() { // TODO Auto-generated method stub System.out.println("DBSource"); return "DBSource"; } } class FileSource implements DataSource{ @Override public String readData() { // TODO Auto-generated method stub System.out.println("FileSource"); return "FileSource"; } } class SocketSource implements DataSource{ @Override public String readData() { // TODO Auto-generated method stub System.out.println("SocketSource"); return "SocketSource"; } } abstract class FileDealer{ protected DataSource dataSource; public void setDataSource(DataSource _dataSource){ dataSource = _dataSource; } abstract public void StoreToFile(); } class WordFileDealer extends FileDealer{ @Override public void StoreToFile() { // TODO Auto-generated method stub String data = dataSource.readData(); System.out.println("WordFileDealer"); } } class ExcelFileDealer extends FileDealer{ @Override public void StoreToFile() { // TODO Auto-generated method stub String data = dataSource.readData(); System.out.println("ExcelFileDealer"); } } class PowerPointerFileDealer extends FileDealer{ @Override public void StoreToFile() { // TODO Auto-generated method stub String data = dataSource.readData(); System.out.println("PowerPointerFileDealer"); } } public class BridgeModeTest { public static void main(String[] args) { // TODO Auto-generated method stub DataSource dataSource = new DBSource(); FileDealer fileDealer = new WordFileDealer(); fileDealer.setDataSource(dataSource); fileDealer.StoreToFile(); } }

    结果输出

    DBSource WordFileDealer

    结论

    避免多层继承带来的类之间静态绑定,数量过多的弊端符合开闭原则,利于扩展
    转载请注明原文地址: https://ju.6miu.com/read-26294.html

    最新回复(0)