Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1743578
  • 博文数量: 297
  • 博客积分: 285
  • 博客等级: 二等列兵
  • 技术积分: 3006
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-06 22:04
个人简介

Linuxer, ex IBMer. GNU https://hmchzb19.github.io/

文章分类

全部博文(297)

文章存档

2020年(11)

2019年(15)

2018年(43)

2017年(79)

2016年(79)

2015年(58)

2014年(1)

2013年(8)

2012年(3)

分类: Java

2017-02-05 16:36:53

最近看的java design pattern 都出自 Java design patterns 一书。
这个factory pattern 要取决于用户的输入来实例化不同的类。 而super class 可以是个interface ,也可以是个普通的类。

Usage in JDK:  值得一看
java.util.Calendar, ResourceBundle, and NumberFormat geninstance() methods use Factory pattern.
valueof() method in wrapper classes like Boolean, Integer etc. 

下面是例子:

点击(此处)折叠或打开

  1. package factorypattern;


  2. interface IMobile{
  3.     public void cost();
  4.     public void pictureCapacity();
  5.     public void batterPower();
  6. }

  7. class Lenovo implements IMobile{

  8.     @Override
  9.     public void cost(){
  10.         System.out.println("Lenovo Cost starts from 10000");
  11.     }

  12.     @Override
  13.     public void pictureCapacity(){
  14.         System.out.println("Lenovo camera capacity starts from 10MP");

  15.     }

  16.     @Override
  17.     public void batterPower(){
  18.         System.out.println("Lenovo battery power starts from 2500 MAH");
  19.     }

  20.     @Override
  21.     public String toString(){
  22.         return "Lenovo [toString()= " +super.toString() +" ]";
  23.     }
  24. }

  25. class Samsung implements IMobile{

  26.     @Override
  27.     public void cost(){
  28.         System.out.println("Samsung Cost starts from 6000");
  29.     }

  30.     @Override
  31.     public void pictureCapacity(){
  32.         System.out.println("Samsung camera capacity starts from 4MP");

  33.     }

  34.     @Override
  35.     public void batterPower(){
  36.         System.out.println("Samsung battery power starts from 1200 MAH");
  37.     }

  38. }

  39. public class FactoryPatternDemo {
  40.     static IMobile createMobile(String type){
  41.         IMobile mob=null;
  42.         if("len".equalsIgnoreCase(type)){
  43.             mob = new Lenovo();
  44.             System.out.println("Lenovo created");
  45.         }else if ("sam".equalsIgnoreCase(type)){
  46.             mob = new Samsung();
  47.             System.out.println("Samsung created");
  48.         }
  49.         return mob;
  50.     }

  51.     public static void main(String[] args){
  52.         Lenovo len = (Lenovo) createMobile("len");
  53.         len.batterPower();
  54.         System.out.println(len);

  55.         Samsung sam = (Samsung) createMobile("sam");
  56.         sam.cost();
  57.         System.out.println(sam);
  58.     }
  59. }


阅读(526) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~