首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

工场与匿名内部类

2012-09-25 
工厂与匿名内部类??// 匿名内部类 & 工厂方法interface Service{void method1()void method2()}interfac

工厂与匿名内部类

?

?

// 匿名内部类 & 工厂方法interface Service{void method1();void method2();}interface ServiceFactory{Service getService();}class Implementation1 implements Service{private Implementation1(){}public void method1(){System.out.println("Implementation1 methdo1");}public void method2(){System.out.println("Implementation1 methdo2");}public static ServiceFactory factory = new ServiceFactory(){public Service getService() {return new Implementation1();}};}class Implementation2 implements Service{private Implementation2(){};public void method1() {System.out.println("Implementation2 methdo1");}public void method2() {System.out.println("Implementation2 methdo2");}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);}}

?

这样类似,一个工厂来应付一种服务。 具体例子:

?

?

package InnerClass;interface Game{boolean move();}interface GameFactory{Game getGame();}class Checkers implements Game{private Checkers(){}private int moves = 0;private static final int MOVES = 3;public boolean move(){System.out.println("Checkers move "+moves);return ++moves != MOVES;}public static GameFactory factory = new GameFactory(){public Game getGame(){return new Checkers();}};}class Chess implements Game{private Chess(){}private int moves = 0;private static final int MOVES = 4;public boolean move(){System.out.println("Chess move "+moves);return ++moves != MOVES;}public static GameFactory factory = new GameFactory(){public Game getGame(){return new Chess();}};}public class Games {public static void playGame(GameFactory factory){Game s = factory.getGame();while(s.move()){}}public static void main(String[] args){playGame(Checkers.factory);playGame(Chess.factory);}}

?

?

?

PS:摘自Thinking in Java

热点排行