java 模板接口开发_Java 初学者笔记 接口与模板设计模式

接口

恰当的原则是优先使用类而不是接口。从类开始,如果使用接口的必要性变得很明确,那么就重构。接口是一个伟大的工具,但它们容易被滥用。

接口中可添加静态方法与默认方法

一个类实现一个接口的同时必须实现该接口的所有方法(可以不用实现默认方法即关键词为为 default的方法)

extends 只能用于单一类,但是在构建接口时可以引用多个基类接口。注意到,接口名之间用逗号分隔。

模板设计模式

9ef6ad1ebb0f00321589ad9edc8b9df5.png

把方法抽象封装到接口或抽象类中,在别的类中对其进行实现即,变得是内容,而其框架则始终如一。

就像我与大厨炒西红柿:大家都是加油、加鸡蛋、加西红柿。只是做出来时味道不同罢了。

接口与抽象类(选择)

特性

接口

抽象类

组合

新类可以组合多个接口

只能继承单一抽象类

状态

不能包含属性(除了静态属性,不支持对象状态)

可以包含属性,非抽象方法可能引用这些属性

默认方法 和 抽象方法

不需要在子类中实现默认方法。默认方法可以引用其他接口的方法

必须在子类中实现抽象方法

构造器

没有构造器

可以有构造器

可见性

隐式 public

可以是 protected 或友元

策略设计模式

创建一个能根据传入的参数类型从而具备不同行为的方法称为策略设计模式。

import java.util.*;

class Processor {

/*父类*/

public String name() {

return getClass().getSimpleName();

}

public Object process(Object input) {

return input;

}

}

/*子类开始,将所有传入类设置为同一个类的子类*/

class Upcase extends Processor {

// 返回协变类型

@Override

public String process(Object input) {

return ((String) input).toUpperCase();

}

}

class Downcase extends Processor {

@Override

public String process(Object input) {

return ((String) input).toLowerCase();

}

}

class Splitter extends Processor {

@Override

public String process(Object input) {

// split() divides a String into pieces:

return Arrays.toString(((String) input).split(" "));

}

}

/*策略开始*/

public class Applicator {

public static void apply(Processor p, Object s) {

//(Processor p。已知:所有传入类设置为同一个类的子类,故其父类的变量可以作为引用

System.out.println("Using Processor " + p.name());//获取其类名

System.out.println(p.process(s));//根据其类名调用其覆盖的相应的process方法

}

public static void main(String[] args) {

String s = "We are such stuff as dreams are made on";

//进入策略,以下3类均为Processor子类,故可用Processor p分别引用以下3个不同类型的对象

apply(new Upcase(), s);

apply(new Downcase(), s);

apply(new Splitter(), s);

}

}

常量字段

接口中的字段都自动是 static 和 final

public interface Months {

int

JANUARY = 1, FEBRUARY = 2, MARCH = 3,

APRIL = 4, MAY = 5, JUNE = 6, JULY = 7,

AUGUST = 8, SEPTEMBER = 9, OCTOBER = 10,

NOVEMBER = 11, DECEMBER = 12;

}

注:以上代码除中文注释外均来自《on java 8》

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值