黑马程序员---java中的接口详解与用例

------ Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------


1、定义接口
    使用interface来定义一个接口。接口定义同类的定义类似,也是分为接口的声明和接口体,其中接口体由常量定义和方法定义两部分组成。定义接口的基本格式如下:

[修饰符] interface 接口名 [extends 父接口名列表]{

[public] [static] [final] 常量;
[public] [abstract] 方法;
}

· 一个类只能 implements 某个接口,不能 继承extends 某个接口,但接口可以继承接口,而且可以继承多个接口

· 接口是一种特殊的 abstract class

· 接口中定义的属性必须是 public static final 类型的,定义的方法必须是 public abstract 类型的,因此这些修饰符可以部分或者全部省略

· 接口中定义的属性值不能在实现类中被改变

· 如果一个类只实现了一个接口的部分方法则该类必须声明为 abstract,

· 一个类可以在继承一个父类的同时实现一个或多个接口,但 extends 必须在 implements 之前

· 不可以 new 接口对象,但可以定义一个 接口的引用 来指向 实现接口的对象,达到多态目的


》》--》》  面  向  接  口  编  程 (command 命令模式)

  

public interface Command  // 通过一个 command interface 让 ProcessArray 与具体的处理方式分离
{
    void process(int[] target) ;  // 定义一个 处理数组 的方法,具体的处理方式 由其实现类来定义
}

class PrintCommand implements Command {   // 用于打印数组元素的Command实例
	public void process(int[] target) {
		System.out.print("数组中的元素:");
		for (int temp : target) {
			System.out.print(temp+"   ");
		}
	}
}
class AddCommand implements Command {   // 用于计算数组元素和的Command实例
	public void process(int[] target) {
		int sum = 0;
		for (int temp : target) {
			sum += temp;
		}
		System.out.print("数组中元素的和:" + sum);
	}
}
class ProcessArray {   // 代理类,用于回调
	public void arrayWork(int[] target, Command cmd) {
		cmd.process(target);   
	}
}
// 测试类
public class Demo {
	public static void main(String[] arga) {
		ProcessArray pa = new ProcessArray();
		int[] arr = { 1, 3, 5, 7 };
		pa.arrayWork(arr, new PrintCommand());  // 使用
		pa.arrayWork(arr, new AddCommand());   // 使用
	}
}
总结(command模式优点):

解耦了发送者和接受者之间联系。 发送者调用一个操作,接受者接受请求执行相应的动作,因为使用Command模式解耦,发送者无需知道接受者任何接口。

不少Command模式的代码都是针对图形界面的,它实际就是菜单命令,我们在一个下拉菜单选择一个命令时,然后会执行一些动作.

将这些命令封装成在一个类中,然后用户(调用者)再对这个类进行操作,这就是Command模式,换句话说,本来用户(调用者)是直接调用这些命令的,如菜单上打开文档(调用者),就直接指向打开文档的代码,使用Command模式,就是在这两者之间增加一个中间者,将这种直接关系拗断,同时两者之间都隔离,基本没有关系了.

显然这样做的好处是符合封装的特性,降低耦合度,Command是将对行为进行封装的典型模式,Factory是将创建进行封装的模式,
从Command模式,我也发现设计模式一个"通病":好象喜欢将简单的问题复杂化, 喜欢在不同类中增加第三者,当然这样做有利于代码的健壮性 可维护性 还有复用性.



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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值