标签:方法 ret 情况 移动 nbsp nim 字符串 rate 了解
普通工厂模式 若干接口+若干实现类+一个工厂类+测试类
//首先定义一个接口
1 public interface Zoo { //动物接口 2 void Wlak();//每个动物都能有自己移动的方式 3 void Eate();//每个动物都由自己吃饭的方式 4 }
//若干实现类 Dog
public class Dog implements Zoo {//Dog实现Zoo
2 public void Wlak() { 3 System.out.println("Dog.wlak()"); 4 5 } 6 public void Eate() { 7 System.out.println("Dog.eate()"); 8 } 9 }
//若干实现类 Cat
1 public class Cat implements Zoo{//Cat实现Zoo 2 3 @Override 4 public void Wlak() { 5 System.out.println("Cat.wlak()"); 6 7 } 8 9 @Override 10 public void Eate() { 11 System.out.println("Cat.eate()"); 12 13 } 14 }
// 工厂类
1 public class Animals { 2 public Zoo returnAnimal(String name) { 3 if("Cat".equals(name)) { 4 return new Cat(); 5 }else { 6 return new Dog(); 7 } 8 9 } 10 11 }
//这里可能出现字符串不匹配的情况,从而导致实例不能正常被创建,为了解决这个问题下面会单独介绍
//最后,写一个测试类,用于实现目标功能
public class Demo1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Animals animals=new Animals();
Zoo cat=animals.returnAnimal("Cat");
cat.Eate();
cat.Wlak();
Zoo dog=animals.returnAnimal("Dog");
dog.Eate();
dog.Wlak();
}
}
//设计模式,普通工厂模式,定义一个接口用于保存工厂产品的共同特性,实现产品接口,用于构造产品,实现不同产品的不同细节
2.为了解决上面字符串参数传入错误,不能正常创建实例时,采用下面的方法,更改工厂类。
1 public class Animals { 2 public Zoo creatDog() { 3 return new Dog(); 4 } 5 public Zoo creatCat() { 6 return new Cat(); 7 } 8 9 }
//工厂类里有多个小工厂
标签:方法 ret 情况 移动 nbsp nim 字符串 rate 了解
原文地址:https://www.cnblogs.com/wshn/p/10261313.html