zoukankan      html  css  js  c++  java
  • 设计模式学习笔记二十三:今天学什么

    动机

    桥接(BRIDGE)模式 也叫HANDLE/BODY模式,属于对象结构型模式。将抽象部分与实现部分分离,使他们都可以独立的变化。(摘自《GoF设计模式》)

    个人见解

    我理解的桥接模式就是把存在继承关系的结构中的变化的部分进行封装传入。

    UML结构图:

    场景模拟:今天学什么?

    小明是一个爱学习的孩子,他学习的过程都是一样的,到桌子前,打开台灯,戴上耳机,选择一本书,阅读。
    除了选择的书不一样,其他的都和昨天一样,老时间老地点还是这个人。
    很明显小明不是北漂。:]

    代码实现

    1.学习基类,即Abstraction:

    public abstract class StudyWhat {
        protected Subject subject;
    	// 需要传入学习的科目
        public StudyWhat(Subject subject) {
            this.subject = subject;
        }
        public abstract void study();
    }
    
    

    2.具体的学习实现,即RefinedAbstraction:

    public class ConcreteStudy extends StudyWhat {
    
        public ConcreteStudy(Subject subject) {
            super(subject);
        }
    
        @Override
        public void study() {
            System.out.println("到桌子前,打开台灯,戴上耳机,准备阅读:" + subject.getName());
        }
    }
    
    

    3.科目抽象,即Implementor:

    public interface Subject {
        public String getName();
    }
    

    4.科目实现,即:ConcreateImplementorA和ConcreateImplementorB:

    public class JvmSubject implements Subject {
    
        @Override
        public String getName() {
            return "《深入理解Java虚拟机》";
        }
    }
    
    public class TcpIp1Subject implements Subject {
    
        @Override
        public String getName() {
            return "《TCP/IP详解卷1》";
        }
    }
    
    

    5.调用,即Client:

    public class Run {
        public static void main(String[] args) {
            StudyWhat studyWhat = new ConcreteStudy(new JvmSubject());
            studyWhat.study();
            studyWhat = new ConcreteStudy(new TcpIp1Subject());
            studyWhat.study();
        }
    
    }
    
  • 相关阅读:
    ssh 使用密钥文件
    VS2015企业版,社区版,专业版详细对比
    Redis 与 数据库处理数据的两种模式(转)
    工业级物联网项目架构设计思想(转)
    C# and Redis,安装作为服务
    C# CRC32
    c++,C# 转换
    app配置智能硬件的解决方案
    C# 与C++的数据转换
    C++ 对数组sizeof 和对数组元素sizeof
  • 原文地址:https://www.cnblogs.com/liushijie/p/4805875.html
Copyright © 2011-2022 走看看