JAVA匿名内部类实现工厂化生产

     今天看了一下内部类,发现匿名内部类貌似是一个很高深的玩意,他在初始化的时候竟然又定义了一个无名的内部类去继承这个实现类或者说是接口,可谓java实现多态性 

的一个非常漂亮的方法,下面请看实例代码

package com.bird.thinking;

/**
 * 
 * @author Bird
 * @category 匿名内部类实现工厂化生产
 */

interface Service{//需要生产的接口
	void method1();
	void method2();
}

interface ServiceFactory{//工厂生产接口
	Service getService();
}

class Implementation1 implements Service{
	private Implementation1(){}//构造器私有,禁止new
	
	public void method1(){
		System.out.println("Implementation1 method1");
	}
	
	public void method2(){
		System.out.println("Implementation1 method2");
	}
	
	public static ServiceFactory factory= //使用匿名内部类实现ServiceFactory接口,将当前类初始化
		new ServiceFactory(){
		public Service getService(){
			return new Implementation1();
		}
	};
	
}

class Implementation2 implements Service{//类似
	private Implementation2(){}
	
	public void method1(){
		System.out.println("Implementation2 method1");
	}
	
	public void method2(){
		System.out.println("Implementation2 method2");
	}
	
	public static ServiceFactory factory = 
		new ServiceFactory(){
		public Service getService(){
			return new Implementation2();
		}
	};
}

public class Factories {
	public static void serviceConsumer(ServiceFactory fact){
		Service s = fact.getService();
		s.method1();
		s.method2();
	}
	
	public static void main(String[] args){
		serviceConsumer(Implementation1.factory);//类是类的多态性
		
		serviceConsumer(Implementation2.factory);
	}
}


运行结果

Implementation1 method1
Implementation1 method2
Implementation2 method1
Implementation2 method2


      这个包里面有三个类,其实应该是五个类,因为有两个匿名内部类,他通过接口ServiceFactory实现工厂化生产,配上类继承的多态性,可以说变的太美妙的,解释在代码里面都有,还是仔细去体会代码吧。经典啊!!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值