鱼跃于渊

First know how, Second know why !
posts - 0, comments - 1, trackbacks - 0, articles - 49

抽象工厂模式

Posted on 2008-12-21 09:04 鱼跃于渊 阅读(122) 评论(0)  编辑  收藏 所属分类: 设计模式

  1 package com.givetop.AbstractFactory;
  2 
  3 public class Factory {
  4     public static void main(String[] args){
  5         YangSheng ys = new YangSheng();
  6         Animal bull = null;
  7         bull = ys.getAnimal("Bull");
  8         bull.eat();
  9         bull.sleep();
 10     }
 11 }
 12 
 13 interface NWFactory{
 14     public Animal getAnimal(String type);
 15     public Person getPerson(String type);
 16 }
 17 
 18 class YangSheng implements NWFactory{
 19     Person man = null;
 20     Animal bull = null;
 21     public Animal getAnimal(String type){
 22         try {
 23             bull = (Bull)Class.forName("com.givetop.AbstractFactory."+type).newInstance();
 24         } catch (InstantiationException e) {
 25             e.printStackTrace();
 26         } catch (IllegalAccessException e) {
 27             e.printStackTrace();
 28         } catch (ClassNotFoundException e) {
 29             e.printStackTrace();
 30         }
 31         return bull;
 32     }
 33     public Person getPerson(String type){
 34         try {
 35             man = (Man)Class.forName("com.givetop.AbstractFactory."+type).newInstance();
 36         } catch (InstantiationException e) {
 37             e.printStackTrace();
 38         } catch (IllegalAccessException e) {
 39             e.printStackTrace();
 40         } catch (ClassNotFoundException e) {
 41             e.printStackTrace();
 42         }
 43         return man;
 44     }
 45 }
 46 
 47 class YinSheng implements NWFactory{
 48     Person woman = null;
 49     Animal cow = null;
 50     public Animal getAnimal(String type){
 51         try {
 52             cow = (Cow)Class.forName("com.givetop.AbstractFactory."+type).newInstance();
 53         } catch (InstantiationException e) {
 54             e.printStackTrace();
 55         } catch (IllegalAccessException e) {
 56             e.printStackTrace();
 57         } catch (ClassNotFoundException e) {
 58             e.printStackTrace();
 59         }
 60         return cow;
 61     }
 62     public Person getPerson(String type){
 63         try {
 64             woman = (Woman)Class.forName("com.givetop.AbstractFactory."+type).newInstance();
 65         } catch (InstantiationException e) {
 66             e.printStackTrace();
 67         } catch (IllegalAccessException e) {
 68             e.printStackTrace();
 69         } catch (ClassNotFoundException e) {
 70             e.printStackTrace();
 71         }
 72         return woman;
 73     }
 74 }
 75 
 76 interface Animal{
 77     public void eat();
 78     public void sleep();
 79 }
 80 
 81 interface Person{
 82     public void eat();
 83     public void sleep();
 84 }
 85 
 86 class Bull implements Animal{
 87     public void eat(){
 88         System.out.println("公牛开始吃东西了!");
 89     }
 90     public void sleep(){
 91         System.out.println("公牛开始睡觉了!");
 92     }
 93 }
 94 
 95 class Cow implements Animal{
 96     public void eat(){
 97         System.out.println("奶牛开始吃东西了!");
 98     }
 99     public void sleep(){
100         System.out.println("奶牛开始睡觉了!");
101     }
102 }
103 
104 class Man implements Person{
105     public void eat(){
106         System.out.println("男人开始吃东西了!");
107     }
108     public void sleep(){
109         System.out.println("男人要睡觉了!");
110     }
111 }
112 
113 class Woman implements Person{
114     public void eat(){
115         System.out.println("女人开始吃东西了!");
116     }
117     public void sleep(){
118         System.out.println("女人要睡觉了!");
119     }
120 }

只有注册用户登录后才能发表评论。


网站导航: