Java设计模式,结构型(一)(装饰者模式,适配器模式)

12 篇文章 0 订阅
12 篇文章 0 订阅

装饰者模式

装饰者模式可以在不修改原来类的基础上灵活的对他的功能进行扩展。
首先创建公共接口。被装饰对象以及装饰者都要实现它。

public interface Component {
    void operate();
}

被装饰对象:

public  class Car implements Component {
    @Override
    public void operate() {
        System.out.println("车");
    }
}

装饰者:

public abstract class Decorator implements Component {
    private Component component;
    public Decorator(Component component) {
        this.component = component;
    }
    @Override
    public void operate() {
        component.operate();
        add();
    }
    public abstract void add();
}

装饰细节:

public class NewCar extends Decorator {
    public NewCar(Component component) {
        super(component);
    }
    @Override
    public void add() {
        System.out.println("好");
    }
}

验证:

public class MyClass {
    public static void main(String[] args){
        Component component=new Car();
        component=new NewCar(component);
        component.operate();
    }
}

输出:

小结

典型使用在InputStream中。

适配器模式

适配器模式是为了解决数据类型不用时转换的一种方法。
适配器(抽象或者接口)

public abstract class Adapter  {
    public abstract String convert();
}

需要适配的目标(输出):

public class View {
    protected String data;
    private Adapter adapter;
    public void setAdapter(Adapter adapter) {
        this.adapter = adapter;
        data = adapter.convert();
    }
}

适配的数据(输入):

public class ListData {
    public String getData() {
        return "1";
    }
}

继承Adapter,重写适配方法:

public class ListAdapter extends Adapter {
    private ListData listData;
    public ListAdapter(ListData listData) {
        this.listData = listData;
    }
    @Override
    public String convert() {
        return listData.getData();
    }
}

使用:

public class MyClass {
    public static void main(String[] ags) {
        View view = new View();
        view.setAdapter(new ListAdapter(new ListData()));
        System.out.println(view.data);
    }
}

小结

RecycleView,ListView。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值