设计模式原则(3):依赖倒置原则

定义:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。
具体到Java中就是“面向接口编程”。

例子:
违法依赖倒置的情况
public class Student {
	public void read(Book book){
		System.out.println("学生开始阅读:"+book.getName());
	}
}

public class Book {
	public String getName() {
		return "书籍";
	}
}


当学生需要阅读网页时,就需要修改Student类,这是很不友好的设计。下面我们看遵守依赖倒置原则的例子。
public interface Person {
	public void read(Reader reader);
}

public interface Reader {
	public String getName();
}

public class Student implements Person{
	@Override
	public void read(Reader reader) {
		System.out.println("学生开始阅读:"+reader.getName());
	}
}

public class Book implements Reader {
	public String getName() {
		return "书籍";
	}
}

public class Website implements Reader {
	public String getName() {
		return "网页";
	}
}

public class Test {
	public static void main(String[] args) {
		Person student = new Student();
		student.read(new Book());
		student.read(new Website());
	}
}


在read方法中我们使用了接口作为参数。

总结:
1. 每个类最好有接口或者抽象类,或者同时接口和抽象类都有。
2. 变量声明最好是接口或者抽象类。
3. 继承时遵守里氏替换原则。





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值