设计模式之工厂方法模式

Animal

package july.star.thread21;
 /**
  * Animal抽象类
  * @author MoXingJian
  * @email 939697374@qq.com
  * @date 2016年12月10日 下午8:17:28
  * @version 1.0
  */
public abstract class Animal {
     //抽象方法,动物是抽象的
     public abstract void eat();
}



Cat
package july.star.thread21;
 /**
  * Cat类,继承Animal
  * @author MoXingJian
  * @email 939697374@qq.com
  * @date 2016年12月10日 下午8:18:22
  * @version 1.0
  */
public class Cat extends Animal{
     //实现该方法就不是抽象了
     @Override
     public void eat() {
          System.out.println("猫吃鱼");
     }
     
}


CatFactory:
package july.star.thread21;
 /**
  * CatFactory
  * 创建Cat的工厂类
  * @author MoXingJian
  * @email 939697374@qq.com
  * @date 2016年12月10日 下午8:21:27
  * @version 1.0
  */
public class CatFactory implements AnimalFactory{
     @Override
     public Animal createAnimal() {
          //由工厂创建Cat类
          return new Cat();
     }
}



Dog:
package july.star.thread21;
 /**
  * Dog类,继承抽象Animal
  * @author MoXingJian
  * @email 939697374@qq.com
  * @date 2016年12月10日 下午8:19:41
  * @version 1.0
  */
public class Dog extends Animal{
     public void eat(){
          System.out.println("狗吃肉");
     }
}





DogFactory
package july.star.thread21;
 /**
  * DogFactory
  * 创建Dog工厂类
  * @author MoXingJian
  * @email 939697374@qq.com
  * @date 2016年12月10日 下午8:22:28
  * @version 1.0
  */
public class DogFactory implements AnimalFactory{
     @Override
     public Animal createAnimal() {
          //创建Dog,返回Animal,不知道创建了什么类,输出才知道
          return new Dog();
     }
}




AnimalDemo
package july.star.thread21;
 /**
  * AnimalDemo
  * @author MoXingJian
  * @email 939697374@qq.com
  * @date 2016年12月10日 下午8:23:22
  * @version 1.0
  */
public class AnimalDemo {
     public static void main(String[] args) {
          //创建Dog工厂
          DogFactory a = new DogFactory();
          //调用方法创建动物,但不知道是创建了什么动物
          Animal animal = a.createAnimal();
          animal.eat();//输出dog类方法,因为调用的是Dog工厂创建
          
          System.out.println("-----------");
          CatFactory c = new CatFactory();
          Animal cc = c.createAnimal();
          cc.eat();
     }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值