Java之接口与工厂详解一(附源码)

Posted mufeng_慕枫

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java之接口与工厂详解一(附源码)相关的知识,希望对你有一定的参考价值。

前言


       接口是实现多重继承的途径,而生成遵循某个接口的对象的典型方式就是工厂方法设计模式。这与直接调用构造器不同,我们在工厂对象上调用的是创建方法,而该工厂对象将生成接口的某个实现的对象。理论上,通过这种方式,我们的代码将完全与接口的实现分离,这就使得我们可以透明地将某个实现替换成另一个实现。下面的实例展示了工厂方法的结构:

示例源码


package com.mufeng.theninthchapter;

interface Service 
	void method1();

	void method2();


interface ServiceFactory 
	Service getService();


class Implementation1 implements Service 

	public Implementation1() 
		// TODO Auto-generated constructor stub
	

	@Override
	public void method1() 
		// TODO Auto-generated method stub
		System.out.println("Implementation1 method1");
	

	@Override
	public void method2() 
		// TODO Auto-generated method stub
		System.out.println("Implementation1 method2");
	


class Implementation1Factory implements ServiceFactory 

	@Override
	public Service getService() 
		// TODO Auto-generated method stub
		return new Implementation1();
	



class Implementation2 implements Service 

	public Implementation2() 
		// TODO Auto-generated constructor stub
	

	@Override
	public void method1() 
		// TODO Auto-generated method stub
		System.out.println("Implementation2 method1");
	

	@Override
	public void method2() 
		// TODO Auto-generated method stub
		System.out.println("Implementation2 method2");
	


class Implementation2Factory implements ServiceFactory 

	@Override
	public Service getService() 
		// TODO Auto-generated method stub
		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(new Implementation1Factory());
		
		//Implementations are completely interchangeable
		serviceConsumer(new Implementation2Factory());
	



输出结果


Implementation1 method1
Implementation1 method2
Implementation2 method1
Implementation2 method2





以上是关于Java之接口与工厂详解一(附源码)的主要内容,如果未能解决你的问题,请参考以下文章

Java之内部类与向上转型详解(附源码)

Java设计模式之五大创建型模式(附实例和详解)

Java之局部内部类和匿名内部类的区别详解(附源码)

Java 代码实例 14BeanUtils用法详解,附源码分析

《23种设计模式(Java版)》| 工厂模式(内附源码案例)。

Java之内部类链接到外部类(外围类)详解(附源码)