zoukankan      html  css  js  c++  java
  • 设计模式完结(7)--桥接模式----处理多维度变化

    处理多维度变化——桥接模式

    多维 + 变化 ------拆 + 关联

    桥接模式是一种很实用的结构型设计模式,如果软件系统中某个类存在两个独立变化的维度,通过该模式可以将这两个维度分离出来,使两者可以独立扩展,让系统更加符合“单一职责原则”。与多层继承方案不同,它将两个独立变化的维度设计为两个独立的继承等级结构,并且在抽象层建立一个抽象关联,该关联关系类似一条连接两个独立继承结构的桥,故名桥接模式。

    abstract class Abstraction {  
        protected Implementor impl; //定义实现类接口对象  可见性定义为protected,以便在其子类中访问Implementor的方法
    
        public void setImpl(Implementor impl) {  
            this.impl=impl;  
        }  
    
        public abstract void operation();  //声明抽象业务方法  
    }

    //像素矩阵类:辅助类,各种格式的文件最终都被转化为像素矩阵,不同的操作系统提供不同的方式显示像素矩阵  
    class Matrix {  
        //此处代码省略  
    }  
    
    //抽象图像类:抽象类  
    abstract class Image {  
        protected ImageImp imp;  
    
        public void setImageImp(ImageImp imp) {  
            this.imp = imp;  
        }   
    
        public abstract void parseFile(String fileName);  
    }  
    
    //抽象操作系统实现类:实现类接口  
    interface ImageImp {  
        public void doPaint(Matrix m);  //显示像素矩阵m  
    }   
    
    //Windows操作系统实现类:具体实现类  
    class WindowsImp implements ImageImp {  
        public void doPaint(Matrix m) {  
            //调用Windows系统的绘制函数绘制像素矩阵  
            System.out.print("在Windows操作系统中显示图像:");  
        }  
    }  
    
    //Linux操作系统实现类:具体实现类  
    class LinuxImp implements ImageImp {  
        public void doPaint(Matrix m) {  
            //调用Linux系统的绘制函数绘制像素矩阵  
            System.out.print("在Linux操作系统中显示图像:");  
        }  
    }  
    
    //Unix操作系统实现类:具体实现类  
    class UnixImp implements ImageImp {  
        public void doPaint(Matrix m) {  
            //调用Unix系统的绘制函数绘制像素矩阵  
            System.out.print("在Unix操作系统中显示图像:");  
        }  
    }  
    
    //JPG格式图像:扩充抽象类  
    class JPGImage extends Image {  
        public void parseFile(String fileName) {  
            //模拟解析JPG文件并获得一个像素矩阵对象m;  
            Matrix m = new Matrix();   
            imp.doPaint(m);  
            System.out.println(fileName + ",格式为JPG。");  
        }  
    }  
    
    //PNG格式图像:扩充抽象类  
    class PNGImage extends Image {  
        public void parseFile(String fileName) {  
            //模拟解析PNG文件并获得一个像素矩阵对象m;  
            Matrix m = new Matrix();   
            imp.doPaint(m);  
            System.out.println(fileName + ",格式为PNG。");  
        }  
    }  
    
    //BMP格式图像:扩充抽象类  
    class BMPImage extends Image {  
        public void parseFile(String fileName) {  
            //模拟解析BMP文件并获得一个像素矩阵对象m;  
            Matrix m = new Matrix();   
            imp.doPaint(m);  
            System.out.println(fileName + ",格式为BMP。");  
        }  
    }  
    
    //GIF格式图像:扩充抽象类  
    class GIFImage extends Image {  
        public void parseFile(String fileName) {  
            //模拟解析GIF文件并获得一个像素矩阵对象m;  
            Matrix m = new Matrix();   
            imp.doPaint(m);  
            System.out.println(fileName + ",格式为GIF。");  
        }  
    }
  • 相关阅读:
    《大道至简》读后感
    第一周学习总结-Java
    c++与java的几个不同点
    单调队列 滑动窗口模型
    计算空间
    关于dp初始化问题
    康托展开小结-
    Vm-Ubuntu下配置Qt开发环境
    C++学习013多态
    C++学习012友元
  • 原文地址:https://www.cnblogs.com/wuer888/p/6687904.html
Copyright © 2011-2022 走看看