设计模式:外观模式

1.定义

提供一个接口,使得客户端只通过接口访问。隐藏内部子系统的实现。

2.例子

2.1 抽象出API方法,并实现

public abstract class NokiaPhone {
    public abstract void design();
    public abstract void development();
    public abstract void production();
}

public class NokiaPhoneImpl extends NokiaPhone{
    private Software software = new SoftwareImpl();
    private Hardware hardware = new HardwareImpl();
    private Production production = new ProductionImpl();


    @Override
    public void design() {
        hardware.design();
        software.design();
    }

    @Override
    public void development() {
        hardware.development();
        software.development();

    }

    @Override
    public void production() {
        hardware.test();
        software.test();
        production.production();
    }
}

最高层接口就是为了统一API,客户端调用只需要调用设计,开发和生产三个方法举行了,具体内部实现无须关注。具体的实现由内部的子系统去完成。

2.2 子系统

硬件部

public interface Hardware {
    public void design();
    public void development();
    public void test();
}

public class HardwareImpl implements Hardware {
    private static final String TAG = HardwareImpl.class.getSimpleName();

    @Override
    public void design() {
        Log.d(TAG,"design");
    }

    @Override
    public void development() {
        Log.d(TAG,"development");
    }

    @Override
    public void test() {
        Log.d(TAG,"test pass");
    }
}

软件部

public interface Software {
    public void design();
    public void development();
    public void test();
}

public class SoftwareImpl implements Software{
    private static final String TAG = SoftwareImpl.class.getSimpleName();

    @Override
    public void design() {
        Log.d(TAG,"design");
    }

    @Override
    public void development() {
        Log.d(TAG,"development");
    }

    @Override
    public void test() {
        Log.d(TAG,"test pass");
    }
}

生产部

public interface Production {
    public void production();
}

public class ProductionImpl implements Production {
    private static final String TAG = ProductionImpl.class.getSimpleName();

    @Override
    public void production() {
        Log.d(TAG,"production nokia");
    }
}

2.3开始调用

NokiaPhoneImpl nokiaPhoneImpl = new NokiaPhoneImpl();
nokiaPhoneImpl.design();
nokiaPhoneImpl.development();
nokiaPhoneImpl.production();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值