Posted on 2008-12-21 09:04
鱼跃于渊 阅读(124)
评论(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 }