匿名内部类实现工厂方法的两个典例

例一:

interfaceService

{

       void method1();

       void method2();

}

interfaceServiceFactory

{

       Service getService();

}

classImplementation1 implements Service

{

       private Implementation1(){}

       public voidmethod1(){System.out.println("Implementation1 method1");}

       public voidmethod2(){System.out.println("Implementation1 method2");}

       public static ServiceFactory factory =

              new ServiceFactory(){

              public Service getService(){

                     return new Implementation1();

              }

       };

}

classImplementation2 implements Service

{

       private Implementation2(){}

       public voidmethod1(){System.out.println("Implementation2 method1");}

       public voidmethod2(){System.out.println("Implementation2 method2");}

       public static ServiceFactory factory =

              new ServiceFactory(){

              public Service getService(){

                     return new Implementation2();

              }

       };

}

publicclass Factories

{

       public static voidserviceConsumer(ServiceFactory fact)

       {

              Service s = fact.getService();

              s.method1();

              s.method2();

       }

       public static void main(String[] args)

       {

              serviceConsumer(Implementation1.factory);

              serviceConsumer(Implementation2.factory);

       }

}

例二:

interfaceGame

{

       boolean move();

}

interfaceGameFactory

{

       Game getGame();

}

classCheckers 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 newCheckers();}

       };

}

classChess 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 = newGameFactory(){

              public Game getGame(){return new Chess();}

       };

}

publicclass Games

{

       public static void playGame(GameFactoryfactory){

              Game s = factory.getGame();

              while(s.move())

                     ;

       }

       public static void main(String[] arg)

       {

              playGame(Checkers.factory);

              playGame(Chess.factory);

       }

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值