为了在ListView的onScroll事件中添加一些行为,我按子类ListView添加了一些代码:
class MyListView extends ListView{
public void setOnScrollListener(OnScrollListener listener){
final OnScrollListener lis = new OnScrollListener(){
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
listener.onScrollStateChanged(view, scrollState);
//below is added behavior of my Listview
}
}
super.setOnScrollListener(lis);
}
}
并且使用它很简单:
MyListView myList = new MyListView(...);
myList.setOnScrollListener(new OnScrollListener(){...});//here is the old logic
这听起来像Decorator模式,但它不是,因为没有复合但只有继承(事实上我不需要复合)。
所以问题是我该怎么称呼它?
答案 0 :(得分:2)
这不是Gang of Four Design Pattern。您只是使用inheritance来扩展功能。
答案 1 :(得分:2)
只是OOP概念扩展ListView
类以获取其功能,不能被视为装饰器设计模式。
我们使用Decorator设计模式在运行时添加/修改对象的功能。
装饰器设计模式由四个组成部分组成:
<强> 1。组件接口
示例
public interface Car
{
public void assemble();
}
<强> 2。组件实施
实施例
public class BasicCar implements Car
{
@Override
public void assemble()
{
System.out.print("Basic Car.");
}
}
第3。装饰强>
实施例
public class CarDecorator implements Car
{
protected Car car;
public CarDecorator(Car c)
{
this.car=c;
}
@Override
public void assemble()
{
this.car.assemble();
}
}
第3。混凝土装饰
实施例
// Adding feature at runtime using decorator pattern to SportsCar
public class SportsCar extends CarDecorator
{
public SportsCar(Car c)
{
super(c);
}
@Override
public void assemble()
{
car.assemble();
System.out.print(" Adding features of Sports Car.");
}
}
// Adding feature at runtime using decorator pattern to LuxuaryCar
public class LuxuaryCar extends CarDecorator
{
public LuxuaryCar(Car c)
{
super(c);
}
@Override
public void assemble()
{
car.assemble();
System.out.print(" Adding features of Luxuary Car.");
}
}
如何使用?
Car sportsCar = new SportsCar(new BasicCar());
sportsCar.assemble();
上面我们使用Decorator Design Pattern
在运行时向BasicCar添加跑车功能答案 2 :(得分:1)
它被称为 继承 。如果您还不知道,这是一个OOP概念。