zoukankan      html  css  js  c++  java
  • 设计模式笔记--适配器

    举个栗子:
    笔记本要充电,电压必须稳定在20V左右,家用电压是220V左右,直接接上大概会爆掉。这就需要电压适配器。

    └── adapter
        ├── ChargerAdapter.java
        ├── Computer.java
        ├── ComputerNew.java
        └── Test.java
    
    package com.xh.pattern.adapter;
    
    /**
     * 没有适配器的电脑
     * Created by root on 3/15/18.
     */
    public class Computer {
    
        /**
         * 充电
         *
         * @param voltage 电压
         */
        public void charge(int voltage) {
            if (18 <= voltage && voltage <= 20) {
                System.out.println("电压标准,正在充电...");
            } else {
                System.out.println("非标准电压,不能充电!");
            }
    
        }
    }
    
    package com.xh.pattern.adapter;
    
    /**
     * 适配器
     * Created by root on 3/15/18.
     */
    public class ChargerAdapter {
    
        /**
         * 变压
         *
         * @param voltage 电压
         */
        public int changeVoltage(int voltage) {
            System.out.println("电压是" + voltage + "V,改变为19V");
            return 19;
    
        }
    }
    
    package com.xh.pattern.adapter;
    
    /**
     * Created by root on 3/15/18.
     */
    public class ComputerNew extends Computer {
    
        private static ChargerAdapter chargerAdapter = new ChargerAdapter();
    
        /**
         * 充电
         *
         * @param voltage 电压
         */
        public void charge(int voltage) {
            voltage = chargerAdapter.changeVoltage(voltage);
            super.charge(voltage);
        }
    }
    
    package com.xh.pattern.adapter;
    
    /**
     * Created by root on 3/15/18.
     */
    public class Test {
        public static void main(String[] args) {
            Computer computer = new Computer();
            computer.charge(220);
            System.out.println("====================");
            computer = new ComputerNew();
            computer.charge(220);
        }
    }
    
    非标准电压,不能充电!
    ====================
    电压是220V,改变为19V
    电压标准,正在充电...
    
  • 相关阅读:
    OSI结构和TCP/IP模型
    将[4,3,2,5,4,3]分割成[4,3,2]、[5,4,3]两个List的算法
    Mybatis增加对象属性不增加mapper.xml的情况
    以脚本方式直接执行修改密码的passwd命令
    Raphael的鼠标over move out事件
    Raphael的Braille例子
    Raphael的set使用
    Raphael的transform用法
    Raphael的text及对齐方式
    Raphael初始化,path,circle,rect,ellipse,image
  • 原文地址:https://www.cnblogs.com/lanqie/p/8574400.html
Copyright © 2011-2022 走看看