Java 设计模式-适配器设计模式

  1. 对于java程序来说,如果一个类要想实现一个接口,则必须覆写接口中所有的抽象方法,如果此时接口中定义的方法过多,但是子类有用不到这么多的抽象方法,则使用起来很麻烦,所以此时就需要一个中间的过度,但是过渡类又不想被直接使用,所以将此过渡类定义为抽象类最合适,即一个接口首先被一个抽象类实现(此抽象类为适配器类),并在此抽象类中实现若干方法(方法为空),则以后的子类直接继承此抽象类,就可以覆写所需要的方法,请看以下代码:

本人新手,代码有写的不妥的地方,还请高手指点,此代码相当于抛砖引玉

//定义接口
public interface Computer {
   public abstract void open();
    void close();
    //窗口活动
   public abstract void activated();
    //窗口最小化
   public abstract void iconified();
    //窗口恢复大小
    public abstract void deiconified();

}

接着创建抽象类实现接口

public class ComputerAdapter implements Computer {
    @Override
    public void open() {

    }

    @Override
    public void close() {

    }

    @Override
    public void activated() {

    }

    @Override
    public void iconified() {

    }

    @Override
    public void deiconified() {

    }
}

在创建类继承抽象类,这里有两个继承抽象类的类

//第一个 ComputerImpl类
public class ComputerImpl extends ComputerAdapter {
    @Override
    public void open() {
        System.out.println("电脑打开");
    }

    @Override
    public void close() {
        System.out.println("电脑关闭");
    }
}

第二个类

// 第二个 ComputerImpl11类
public class ComputerImpl11 extends ComputerAdapter {
    @Override
    public void activated() {
        System.out.println("窗口活动");
    }

    @Override
    public void iconified() {
        System.out.println("窗口最小化");
    }

    @Override
    public void deiconified() {
        System.out.println("窗口恢复大小");
    }
}

在创建一个工厂类

public class ComputerFactory {
    public static Computer print(int ii){
       Computer c = null;

        if (ii == 0) {
            c = new ComputerImpl();
        } else if (ii == 1) {
            c = new ComputerImpl11();
        }
        return c;
    }
}

创建测试类

public class Test {
    public static void main(String[] args) {
        Computer c = ComputerFactory.print(0);
        c.open();
        c.close();
    }
}

这时的打印结果是

电脑打开
电脑关闭

霄铭原创,侵权必究
博客主QQ:2534929974

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值