阅读(1118) (1)

重写个别方法

2017-06-01 17:19:35 更新

当对已经存在的实现类,想重写其中的个别方法,而又不需要修改或不方便修改已经存在代码的情况下,可以重新写一个实现类,指定比较高的version值,指定实现的接口,和实现需要重写的实现类,然后重新重写指定的方法即可。对之前的接口稍微修改下,如下

public interface ProductDao 
{
	public List<Product> findAll() throws Exception;
	public void save(Product product) throws Exception;
}

第一个实现类如下

@Implement
public class ProductDaoImpl implements ProductDao
{
	public List<Product> findAll() throws Exception {
		System.out.println("ProductDaoImpl findAll 111");
		return null;
	}
	public void save(Product product) throws Exception {
		System.out.println("ProductDaoImpl save 111");
	}
}

现在需要重写实现类中的save方法,重写一个实现类如下

@Implement(version=3,implement=ProductDao.class)
public class ProductDaoImpl3 extends ProductDaoImpl
{
	@Override
	public void save(Product product) throws Exception {
		System.out.println("ProductDaoImpl3 save 333");
	}
}

注意注解中除了比较高的version值外,还有一个implement,用来指定接口

调用如下

ProductDao productDao=(ProductDao)Factorys.getImpl(ProductDao.class);
		System.out.println("productDao="+productDao);
		productDao.findAll();
		productDao.save(null);

输出

productDao=demo.dao.impl.ProductDaoImpl3@7da79447

ProductDaoImpl findAll 111

ProductDaoImpl3 save 333