zoukankan      html  css  js  c++  java
  • 桥接模式

    /**
     * 桥接模式:按资料说是将抽象和实现分离,这个很难理解,此处不深究定义;下面举个例子说明白
     * 如果形状有长方形,正方形,圆形,颜色有红色和绿色,那么他们的组合就有3x2=6种 如果我们定义6个类去实现,那显然不合理,例如增加了一个形状,那就有4x2=8种了,
     * 伪代码实现上面的方式: public class RedCircle implements Color,Shape{},这样导致2个维度的属性耦合太强了,多层继承了,
     * 如果将Color维度使用组合的方式作为Shape维度的一个属性,这样就可以减少很多子类了
     * 所以,出现了第二种方案,那就是将形状抽象出来,颜色抽象出来,然后颜色以组合的方式引入,这样拓展就可以让两种属性自由组合了,减少了子类的生成
     *
     *
     */
    public abstract class Shape {
        protected Color color;
    
        public Color getColor() {
            return color;
        }
    
        public void setColor(Color color) {
            this.color = color;
        }
    
        protected abstract void draw();
    }
    public interface Color {
        void paint(String shape);
    }
    public class Red implements Color {
        @Override
        public void paint(String shape) {
            System.out.println("画红色的"+shape);
        }
    }
    public class Green implements Color {
        @Override
        public void paint(String shape) {
            System.out.println("画绿色的"+shape);
        }
    }
    public class Circle extends Shape {
        @Override
        public void draw() {
           color.paint("圆形");
        }
    }
    public class Square extends Shape {
    
        @Override
        protected void draw() {
            color.paint("正方形");
        }
    }
    public class Test {
        public static void main(String[] args) {
            Red red = new Red();//红色
            Green green = new Green();
    
            Circle circle = new Circle();
            circle.setColor(red);//画红色的圆
            circle.draw();
            circle.setColor(green);//画绿色的圆
            circle.draw();
        }
    }
  • 相关阅读:
    自定义DelegatingHandler为ASP.NET Web Api添加压缩与解压的功能
    搭建Linux环境--部署discuzx论坛
    搭建Linux环境--安装PHP
    搭建Linux环境--安装Apache
    搭建Linux环境--安装MySQL
    搭建Linux环境--安装tomcat
    搭建Linux环境--安装jdk
    vmware中安装了contes--解决ifconfig无法执行
    设计模式(四)原型模式
    设计模式(三)建造者模式
  • 原文地址:https://www.cnblogs.com/yangxiaohui227/p/10917377.html
Copyright © 2011-2022 走看看