• 桥接模式


     

     

     

     

     

       

     使用桥接模式实现的具体代码:

    接口实现部分:

    package com.bridge;
    
    /**
     * 接口
     */
    public interface Brand {
        void open();//开机
        void close();//关机
        void call();//打电话
    }
    

      

    package com.bridge;
    
    /**
     * Vivo手机
     */
    public class Vivo implements Brand {
        @Override
        public void open() {
            System.out.println("Vivo手机开机了");
        }
    
        @Override
        public void close() {
            System.out.println("Vivo手机关机了");
        }
    
        @Override
        public void call() {
            System.out.println("Vivo手机打电话");
        }
    }
    

      

    package com.bridge;
    
    /**
     * 小米手机
     */
    public class XiaoMi implements Brand {
        @Override
        public void open() {
            System.out.println("小米手机开机了");
        }
    
        @Override
        public void close() {
            System.out.println("小米手机关机了");
        }
    
        @Override
        public void call() {
            System.out.println("小米手机打电话");
        }
    }
    

      

    package com.bridge;
    
    /**
     * HuaWei手机
     */
    public class HuaWei implements Brand {
        @Override
        public void open() {
            System.out.println("HuaWei手机开机了");
        }
    
        @Override
        public void close() {
            System.out.println("HuaWei手机关机了");
        }
    
        @Override
        public void call() {
            System.out.println("HuaWei手机打电话");
        }
    }
    

      

    抽象类部分

    package com.bridge;
    
    /**
     * 折叠式手机
     */
    public class FoldedPhone extends Phone {
        //构造器
        //所以子类一定要创建一个带参数的构造方法去调用父类的带参数构造方法
        public FoldedPhone(Brand brand) {
            super(brand);
        }
        public void open(){
            super.open();
            System.out.println("折叠式手机");
        }
        public void close(){
            super.close();
            System.out.println("折叠式手机");
        }
        public void call(){
            super.call();
            System.out.println("折叠式手机");
        }
    }
    

      

    package com.bridge;
    
    /**
     * 滑盖式手机
     */
    public class SlidePhone extends Phone {
        //构造器
        //所以子类一定要创建一个带参数的构造方法去调用父类的带参数构造方法
        public SlidePhone(Brand brand) {
            super(brand);
        }
        public void open(){
            super.open();
            System.out.println("滑盖式手机");
        }
        public void close(){
            super.close();
            System.out.println("滑盖式手机");
        }
        public void call(){
            super.call();
            System.out.println("滑盖式手机");
        }
    }
    

      

    package com.bridge;
    
    /**
     * 直立式手机
     */
    public class UpRightPhone extends Phone {
        //构造器
        //所以子类一定要创建一个带参数的构造方法去调用父类的带参数构造方法
        public UpRightPhone(Brand brand) {
            super(brand);
        }
        public void open(){
            super.open();
            System.out.println("直立式手机");
        }
        public void close(){
            super.close();
            System.out.println("直立式手机");
        }
        public void call(){
            super.call();
            System.out.println("直立式手机");
        }
    }
    

      

    客户端调用

    package com.bridge;
    
    /**
     * 客户端进行调用
     */
    public class Client {
        public static void main(String[] args) {
            //获取折叠式的小米手机
            Phone xiaomiFoldedPhone = new FoldedPhone(new XiaoMi());
            xiaomiFoldedPhone.open();
            xiaomiFoldedPhone.call();
            xiaomiFoldedPhone.close();
    
            System.out.println("=======================");
            //获取折叠式的Vivo手机
            Phone vivoFoldedPhone = new FoldedPhone(new Vivo());
            vivoFoldedPhone.open();
            vivoFoldedPhone.call();
            vivoFoldedPhone.close();
    
            System.out.println("=======================");
            //获取直立式的小米手机
            Phone xiaomiUpRightPhone = new UpRightPhone(new XiaoMi());
            xiaomiUpRightPhone.open();
            xiaomiUpRightPhone.call();
            xiaomiUpRightPhone.close();
    
            System.out.println("=======================");
            //获取直立式的Vivo手机
            Phone vivoUpRightPhone = new UpRightPhone(new Vivo());
            vivoUpRightPhone.open();
            vivoUpRightPhone.call();
            vivoUpRightPhone.close();
    
            System.out.println("=======================");
            //获取滑盖式的小米手机
            Phone xiaomiSlidePhone = new SlidePhone(new XiaoMi());
            xiaomiSlidePhone.open();
            xiaomiSlidePhone.call();
            xiaomiSlidePhone.close();
    
            System.out.println("=======================");
            //获取滑盖式的Vivo手机
            Phone vivoSlidePhone = new SlidePhone(new Vivo());
            vivoSlidePhone.open();
            vivoSlidePhone.call();
            vivoSlidePhone.close();
    
            System.out.println("=======================");
            //获取滑盖式的华为手机
            Phone huaweiSlidePhone = new SlidePhone(new HuaWei());
            huaweiSlidePhone.open();
            huaweiSlidePhone.call();
            huaweiSlidePhone.close();
            System.out.println("=======================");
            //获取折叠式的华为手机
            Phone huaweiFoldedPhone = new FoldedPhone(new HuaWei());
            huaweiFoldedPhone.open();
            huaweiFoldedPhone.call();
            huaweiFoldedPhone.close();
            System.out.println("=======================");
            //获取直立式的华为手机
            Phone huaweiUpRightPhone = new UpRightPhone(new HuaWei());
            huaweiUpRightPhone.open();
            huaweiUpRightPhone.call();
            huaweiUpRightPhone.close();
        }
    }
    

      

    运行结果

    小米手机开机了
    折叠式手机
    小米手机打电话
    折叠式手机
    小米手机关机了
    折叠式手机
    =======================
    Vivo手机开机了
    折叠式手机
    Vivo手机打电话
    折叠式手机
    Vivo手机关机了
    折叠式手机
    =======================
    小米手机开机了
    直立式手机
    小米手机打电话
    直立式手机
    小米手机关机了
    直立式手机
    =======================
    Vivo手机开机了
    直立式手机
    Vivo手机打电话
    直立式手机
    Vivo手机关机了
    直立式手机
    =======================
    小米手机开机了
    滑盖式手机
    小米手机打电话
    滑盖式手机
    小米手机关机了
    滑盖式手机
    =======================
    Vivo手机开机了
    滑盖式手机
    Vivo手机打电话
    滑盖式手机
    Vivo手机关机了
    滑盖式手机
    =======================
    HuaWei手机开机了
    滑盖式手机
    HuaWei手机打电话
    滑盖式手机
    HuaWei手机关机了
    滑盖式手机
    =======================
    HuaWei手机开机了
    折叠式手机
    HuaWei手机打电话
    折叠式手机
    HuaWei手机关机了
    折叠式手机
    =======================
    HuaWei手机开机了
    直立式手机
    HuaWei手机打电话
    直立式手机
    HuaWei手机关机了
    直立式手机
    

      

     

  • 相关阅读:
    App调试的几个命令实践【转】
    解决sdk更新时候报错 http://dl-ssl.google.com/android上不去,链接拒绝
    fastjson序列化排序问题
    Java中的四种引用
    equal&==&hashcode
    ThreadPool线程池的关注点
    JVM的本地方法栈
    JVM的堆分配
    JVM的类装载子系统
    JVM的数据类型
  • 原文地址:https://www.cnblogs.com/dongyaotou/p/15132305.html
Copyright © 2020-2023  润新知