• 【设计模式】结构型04桥接模式(Bridge Pattern)


    学习地址:http://www.runoob.com/design-pattern/bridge-pattern.html

    桥接模式(Bridge Pattern)


    桥接模式(Bridge pattern)属于结构型模式,它提供一个桥接结构,来实现二者的解耦

    这种模式使用一个作为桥接的接口,使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互不影响

    博主餐好了几个博客,于是顺手也采取了颜色与形状的简单例子。


    主要解决:个人理解,对类的多维切分,从某种角度上方便了扩展。

    何时使用:实现系统可能有多个角度分类,每一种角度都可能变化。

    如何解决:把这种多角度分类分离出来,让它们独立变化,减少它们之间耦合。


    代码:

    1、形状以及桥梁抽象类:

    package com.pat.bridge;
    
    /**
     * 这是桥接模式中的桥梁(形状抽象类)
     * @author ZX
     *
     */
    public abstract class ShapeBridge {
    	Color color;
    	public abstract void draw();
    }
    
    
    
    /**
     * 具体形状
     * @author ZX
     *
     */
    class Circle extends ShapeBridge{
    	String shape="圆形";
    	
    	public void draw() {
    		color.paint(shape);	
    	}
    	
    	public Circle(Color color) {
    		this.color=color;
    	}
    }
    class Squre extends ShapeBridge{
    	String shape="正方形";
    
    	public void draw() {
    		color.paint(shape);	
    	}
    	public Squre(Color color) {
    		this.color=color;
    	}
    } 

    2、颜色类,被桥接对象

    package com.pat.bridge;
    /**
     * 颜色接口
     * @author ZX
     *
     */
    public interface Color {
    	void paint(String shape);
    
    }
    /**
     * 具体颜色
     * @author ZX
     *
     */
    class Red implements Color{
    
        @Override
    	public void paint(String shape) {
        	if(shape==null||"".equals(shape)) {
        		System.out.println("红色色块");
        	}else {
        		System.out.println("红色"+shape);
        	}
    	}	
    }
    class Blue implements Color{
    
        @Override
    	public void paint(String shape) {
        	if(shape==null||"".equals(shape)) {
        		System.out.println("蓝色色块");
        	}else {
        		System.out.println("蓝色"+shape);
        	}
    	}	
    }

    3、测试类:

    package com.pat.bridge;
    
    public class Test {
    	public static void main(String[] args) {
    		Red red = new Red();
    		Squre sq = new Squre(red);
    		sq.draw();
    	}
    }
    

    4、结果:

    红色正方形

  • 相关阅读:
    PHP 命令行参数解析工具类
    【日本软件外包】设计书中常用到的文型
    php沙盒测试 http://sandbox.onlinephpfunctions.com/ SQL语句格式化 https://www-atl.blog.so-net.ne.jp/2015-02-08
    intra-mart
    maven安装和eclipse集成
    MyEclipse破解
    pdf 中画虚线
    方法名同类名相同如果没有__construct,会被当做构造函数。
    ESA2GJK1DH1K微信小程序篇: 源码使用注意事项和程序优化
    GPRS(Air202) Lua开发: OLED显示二维码,信号强度,电池电量
  • 原文地址:https://www.cnblogs.com/the-fool/p/11054133.html
Copyright © 2020-2023  润新知