简单工厂模式

一个接口 Output
1
2
3
4
5
6
7
package  fact;
 
public  interface  Output {
     int  MAX_CACHE_LINE= 50 ;
     void  out();
     void  getData(String msg);
}
两个继承Output接口的类,Printer和BetterPrinter
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
package  fact;
public  class  Printer  implements  Output{
     private  String[] printData = new  String[MAX_CACHE_LINE];
     private  int  dataNum= 0 ;
     public  void  out()
     {
         while (dataNum> 0 )
         {
             System.out.println( "打印机打印:" +printData[ 0 ]);
             System.arraycopy(printData,  1 , printData,  0    , --dataNum);
         }
     }
     public  void  getData(String msg)
     {
         if (dataNum>=MAX_CACHE_LINE)
         {
             System.out.println( "输出队列已满,添加失败。" );
         }
         else
         {
             printData[dataNum++]=msg;
         }
     }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
package  fact;
 
public  class  BetterPrinter  implements  Output{
     private  String[] printData= new  String[MAX_CACHE_LINE* 2 ];
     private  int  dataNum= 0 ;
     public  void  out()
     {
         while (dataNum> 0 )
         {
             System.out.println( "高速打印正在打印:" +printData[ 0 ]);
             System.arraycopy(printData,  1 ,printData,  0 , --dataNum);
         }
     }
     public  void  getData(String msg)
     {
         if (dataNum>=MAX_CACHE_LINE* 2 )
         {
             System.out.println( "输出队列已满,添加失败" );
         }
         else
         {
             printData[dataNum++]=msg;
         }
     }
}

功能:新建一个Computer类,能够方便组合上面任一类(Output或BetterOutput):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package  fact;
 
public  class  Computer {
     private  Output out;
     public  Computer(Output out)
     {
         this .out=out;
     }
     public  void  KeyIn(String msg)
     {
         out.getData(msg);
     }
     public  void  print()
     {
         out.out();
     }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package  fact;
 
public  class  OutputFactory {
     public  Output getOutput()
     {
         //return new Printer();
         return  new  BetterPrinter();
     }
     public  static  void  main(String[] args)
     {
         OutputFactory of= new  OutputFactory();
         Computer c= new  Computer(of.getOutput());
         c.KeyIn( "wang" );
         c.KeyIn( "da" );
         c.print();
     }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值