抽象类和接口简单设计理念

	// 用interface 定义出人的抽象模型

	public interface Person_1 {

		public void breathe();

		public void eat();

		public void sleep();
	}

	// 用abstract 定义出人的抽象模型
	public abstract class Person_2 {

		public abstract void breathe();

		public abstract void eat();

		public abstract void sleep();
	}

	// 这时我们可能还需要额外描述这个人擅长什么,比如这个人还会写代码

	// 用interface 定义
	public interface Person_1_1 {

		public void breathe();

		public void eat();

		public void sleep();

		public void coding();
	}

	// 用abstract 定义
	public abstract class Person_2_1 {

		public abstract void breathe();

		public abstract void eat();

		public abstract void sleep();

		public abstract void coding();
	}

	// 我们知道这显然违背了 核心原则 ISP (Interface Segregation Principle)
	// 而且我们知道并非所有人都会code,所有abstract并非满足is a的关系

	// 重新设计一下吧

	// 这是人类都会的
	public abstract class Person_1_2 {

		public abstract void breathe();

		public abstract void eat();

		public abstract void sleep();
	}

	// 接口的职责尽量单一,接口的public尽量少
	public interface Person_2_2 {

		public void coding();
	}

	// 好了一个会敲代码的人出现了
	public class Person extends Person_1_2 implements Person_2_2 {

		@Override
		public void coding() {
			// TODO Auto-generated method stub

		}

		@Override
		public void breathe() {
			// TODO Auto-generated method stub

		}

		@Override
		public void eat() {
			// TODO Auto-generated method stub

		}

		@Override
		public void sleep() {
			// TODO Auto-generated method stub

		}

	}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值