//=================================================
// File Name :factory
//------------------------------------------------------------------------------
// Author :Common
// 接口名:Pet
// 属性:
// 方法:
interface Pet{
public String getName();
public String getColor();
public int getAge();
}
//类名:Cat
//属性:
//方法:
class Cat implements Pet{
private String Name;
private String Color;
private int Age;
public Cat(String name, String color, int age) {//构造方法
this.setName(name);
this.setColor(color);
this.setAge(age);
}
public String getName() {
return Name;
}
public void setName(String name) {
Name = name;
}
public String getColor() {
return Color;
}
public void setColor(String color) {
Color = color;
}
public int getAge() {
return Age;
}
public void setAge(int age) {
Age = age;
}
}
//类名:Dog
//属性:
//方法:
class Dog implements Pet{
private String Name;
private String Color;
private int Age;
public Dog(String name, String color, int age) {//构造方法
this.setName(name);
this.setColor(color);
this.setAge(age);
}
public String getName() {
return Name;
}
public void setName(String name) {
Name = name;
}
public String getColor() {
return Color;
}
public void setColor(String color) {
Color = color;
}
public int getAge() {
return Age;
}
public void setAge(int age) {
Age = age;
}
}
//类名:PetShop
//属性:
//方法:
class PetShop{
private Pet[] pets;//定义一个Pet形数组,此数字的大小由传入的len决定
private int foot;//定义数组的当前元素下标
public PetShop(int len){//数组的大小由len决定,构造方法
if(len>0){//判断传入的长度是否大于0
this.pets = new Pet[len];//根据传入的大小开辟空间
}else{
this.pets = new Pet[1];//否则只开辟长度为1的空间
}
}
public boolean add(Pet pet){
if(this.foot < this.pets.length){//判断数组是否已经满了
this.pets[foot] = pet;//没有存满则继续添加
this.foot++;//修改下标
return true;//添加成功
}else{
return false;//添加失败,已经存满了
}
}
public Pet[] search(String keyWord){//关键字查找
Pet p[] = null;//存放查找的结果,此处的大小不是固定的
int count = 0;//记录下多少个宠物符合查询结果
for (int i=0;i
if(this.pets[i] != null){
if(this.pets[i].getName().indexOf(keyWord) != -1 || this.pets[i].getColor().indexOf(keyWord) != -1){
count++;//统计符合条件的宠物个数
}
}
}
p = new Pet[count];//根据已经确定的记录数开辟对象数组
int f = 0;//设置增加的位置标记
for (int i=0;i
if(this.pets[i] != null){
if(this.pets[i].getName().indexOf(keyWord) != -1 || this.pets[i].getColor().indexOf(keyWord) != -1){
p[f] = this.pets[i];//将符合查询条件的宠物信息保存
f++;
}
}
}
return p;
}
}
//主类
//Function : 适配器设计模式
public class Pet_demo {
public static void main(String[] args) {
// TODO 自动生成的方法存根
PetShop ps = new PetShop(5);
ps.add(new Cat("白猫","白",2));
ps.add(new Cat("黑猫","黑",4));
ps.add(new Cat("黄猫","黄",3));
ps.add(new Cat("白狗","白",2));
ps.add(new Cat("黑狗","黑",2));
ps.add(new Cat("黄狗","黄",3));
print(ps.search("黑"));
}
public static void print(Pet p[]){
for (int i = 0;i
if(p[i] != null){
System.out.println(p[i].getName()+p[i].getAge()+p[i].getColor());
}
}
}
}