java中接口和工厂设计模式

一.什么是接口?

 接口是一种特殊的抽象类,接口中只有抽象方法和全局变量,且没有构造函数。

接口的特点有:

  1. Java接口中只能包含public,static,final类型的成员变量(默认都是public,static,final类型的,因此在写的时候可以省略)和public,abstract类型的成员方法(默认都是public,abstract类型的,因此在写的时候可以省略);
  2. 接口中没有构造方法,不能被实例化,接口的对象可以利用子类对象的向上转型进行实例化;
  3. 一个接口不能实现(implements)另一个接口,但它可以继承多个其它的接口(接口可以多继承);
  4. 接口必须要有子类,但此时一个子类可以使用implements关键字实现多个接口,当类实现了某个Java接口时,它必须实现接口中的所有抽象方法,否则这个类必须声明为抽象类;

二.接口的应用。

定义一个接口Person,以及他的两个实现子类Programmer(程序员)和Pm(产品经理);

设计一个工厂类Factory,当需要增加更多的子类的时候只需要在Factory中修改方法即可。

Person接口:

package test;
public interface Person {


	public static final String type="员工";
	String sex="男";
	
	public abstract void work();
	public abstract void recreation();

}

工厂类,来对应出具体的子类:

package test;
public class Factory {
   public static Person getType(String className){
	   if(className.equals("Programmer")){
		   return new Programmer();
	   }
	   if(className.equals("Pm")){
		   return new Pm();
	   }
	   return null;
   }

}

Programmer类实现了Person接口:

package test;
public class Programmer implements Person{


	public void recreation() {
		System.out.println("我的娱乐活动就是看书");
		
	}


	public void work() {
		System.out.println("写代码,调试bug");
	}

}

Pm类实现了Person接口:

package test;
public class Pm implements Person {


	public void recreation() {
		System.out.println("我的娱乐活动是关注实时的互联网动态");
	}


	public void work() {
		System.out.println("整理需求,沟通客户");
	}
}

定义一个主类,实现不同人员的不同表现形态:

package test;
public class MainClass {
	public static void main(String[] args){
		Person p1=Factory.getType("Programmer");
		p1.work();
		p1.recreation();
		Person p2=Factory.getType("Pm");
		p2.work();
		p2.recreation();
	}

}

输出结果:

写代码,调试bug
我的娱乐活动就是看书
整理需求,沟通客户
我的娱乐活动是关注实时的互联网动态

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值