抽象工厂模式

来源:互联网 发布:2017淘宝盗图申诉 编辑:程序博客网 时间:2024/06/05 18:17

抽象工厂模式的运用,如果需要创建一些不同的产品,而这些不同的产品又分别属于不同的产品类别,则可以创建产品类别的抽象工厂,

在产品的实现工厂类中加以实现。

抽象工厂模式主要有4个部分组成:抽象工厂类,实现抽象工厂的具体类,抽象类和实现抽象类的具体类。

 

1,所有动物类的接口

package joeho.net.csdn.blog.SimpleFactory;

public interface Animal {
 public void eat();
}

2,老虎类

package joeho.net.csdn.blog.SimpleFactory;

public class Tiger  implements Animal{
 
 public void run() {
  System.out.println("老虎会跑");
 }
 public void eat() {
  System.out.println("老虎会吃");
 }
}

3,海豚类

package joeho.net.csdn.blog.SimpleFactory;

public class Doiphin  implements Animal{
 

 public viod swim() {

  System.out.println("海豚会游泳");
 }

 public void eat() {

  System.out.println("海豚会吃");
 }
}

4,鹦鹉类

package joeho.net.csdn.blog.SimpleFactory;

public class Parrot implements Animal {
 
 public void fly() {

  System.out.println("鹦鹉会飞");
 }

 public void eat() {

  System.out.println("鹦鹉会吃");
 }
}

 

5,亚洲老虎类继承自老虎类

package joeho.net.csdn.blog.SimpleFactory;

public class AsiaTiger  extends Tiger{
 
 public void run() {
  System.out.println("亚洲老虎会跑");
 }
 public void eat() {
  System.out.println("亚洲老虎会吃");
 }
}

6,亚洲海豚类继承自海豚类

package joeho.net.csdn.blog.SimpleFactory;

public class AsiaDoiphin  extends Doiphin  {
 

 public viod swim() {

  System.out.println("亚洲海豚会游泳");
 }

 public void eat() {

  System.out.println("亚洲海豚会吃");
 }
}

7,亚洲鹦鹉类继承自鹦鹉类

package joeho.net.csdn.blog.SimpleFactory;

public class AsiaParrot extends Parrot {
 
 public void fly() {

  System.out.println("亚洲鹦鹉会飞");
 }

 public void eat() {

  System.out.println("亚洲鹦鹉会吃");
 }
}

 

8,非洲老虎类继承自老虎类

package joeho.net.csdn.blog.SimpleFactory;

public class AfricaTiger  extends Tiger{
 
 public void run() {
  System.out.println("非洲老虎会跑");
 }
 public void eat() {
  System.out.println("非洲老虎会吃");
 }
}

 

9,非洲海豚类继承自海豚类

package joeho.net.csdn.blog.SimpleFactory;

public class AfricaDoiphin  extends Doiphin  {
 

 public viod swim() {

  System.out.println("非洲海豚会游泳");
 }

 public void eat() {

  System.out.println("非洲海豚会吃");
 }
}

10,非洲鹦鹉类继承自鹦鹉类

package joeho.net.csdn.blog.SimpleFactory;

public class AfricaParrot extends Parrot {
 
 public void fly() {

  System.out.println("非洲鹦鹉会飞");
 }

 public void eat() {

  System.out.println("非洲鹦鹉会吃");
 }
}

 

11,抽象工厂类

package joeho.net.csdn.blog.SimpleFactory;


public interface AnimalFactory {

 public  Tiger creatTiger () ;

 public  ParrotcreatParrot() ;

 public  DoiphincreatDoiphin() ;
}

12,具体工厂类

package joeho.net.csdn.blog.SimpleFactory;


public class AsiaAnimalFactory implements AnimalFactory {

 public  Tiger creatTiger (){

   return new AsiaTiger();

}

 public  Parrot creatParrot(){

   return new AsiaParrot();

 

}

 public  DoiphincreatDoiphin() {

  return new AsiaDoiphin();

}
}

 

public class AfricaAnimalFactory implements AnimalFactory {

 public  Tiger creatTiger (){

   return new AfricaTiger();

}

 public  Parrot creatParrot(){

   return new AfricaParrot();

 

}

 public  DoiphincreatDoiphin() {

  return new AfricaDoiphin();

}
}

..............

.............
5,客户端调用代码

//非洲老虎

Animal anm = new AfricaAnimalFactory().creatTiger ();

 anm.run();

anm.eat();

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/joeho/archive/2010/01/21/5218988.aspx

原创粉丝点击