zoukankan      html  css  js  c++  java
  • java 工厂模式和内部类的完美结合

    package com.bikeqx.test;
    
    public class Main{
    	public static void apply(ServiceFactory sf){
    		Service s = sf.getService();
    		s.method1();
    		s.method2();
    	}
    	public static void main(String[] args){
    		apply(A.servicefactory);
    		apply(B.servicefactory);
    	}
    }
    
    //顶层接口
    interface Service{
    	void method1();
    	void method2();
    }
    
    //工厂接口
    interface ServiceFactory{
    	Service getService();
    }
    
    class A implements Service{
    	@Override
    	public void method1() {
    		// TODO Auto-generated method stub
    		System.out.println("A method1");
    	}
    	@Override
    	public void method2() {
    		// TODO Auto-generated method stub
    		System.out.println("A method2");
    	}
    	
    	//匿名内部类工厂
    	public static ServiceFactory servicefactory = new ServiceFactory(){
    		@Override
    		public Service getService() {
    			// TODO Auto-generated method stub
    			return new A();
    		}
    	};
    }
    
    class B implements Service {
    	@Override
    	public void method1() {
    		// TODO Auto-generated method stub
    		System.out.println("B method1");
    	}
    	@Override
    	public void method2() {
    		// TODO Auto-generated method stub
    		System.out.println("B method2");
    	}
    	
    	public static ServiceFactory servicefactory = new ServiceFactory(){
    		@Override
    		public Service getService() {
    			// TODO Auto-generated method stub
    			return new B();
    		}
    	};
    }
    
  • 相关阅读:
    macOS 修改键盘重复按键延迟
    stdout 与 stderr 区别
    E. 1-Trees and Queries
    Codeforces Round #615 (Div. 3)
    Codeforces Round 613(div 2)
    Codeforces Edu80
    SPOJ
    快读
    《货车运输》题解--最大生成树&倍增
    倍增思想求lca
  • 原文地址:https://www.cnblogs.com/haodawang/p/5967252.html
Copyright © 2011-2022 走看看