Java
Abstract Class Animal{private String name ;
//getter&setter
public void sound();
}
class Dog extends Animal{
@override
public void sound(){
System.out.println(this.getName()+" wan!wan!");
}
public void run(){
System.out.println(this.getName()+" runs");
}
}
class Bird extends Animal{
@override
public void sound(){
System.out.println(this.getName()+" Ah!Ah!");
}
public void fly(){
System.out.println(this.getName()+" flies");
}
}
class AnimalStaticMethodFactory{
public static Animal makeDog(String name){
Animal dog = new Dog();
dog.setName (name);
return dog;
}
public static Animal makeBird(String name){
Animal bird = new Bird();
bird.setName (name);
return bird;
} }
class AnimalStaticFactory{
public static Animal makeAnimal(String animalType, String name){
Animal animal = null;
if("dog".equals(animalType)) {
animal = new Dog();
}else if("bird".equals(animalType)){
animal = new Bird();
}
dog.setName (name);
return animal;
}
}
C++
class Animal{public:
virtual void sound()=0;
void getName(){return _name;};
void setName(){return _name;};
private:
string _name;
}
class Dog:public Animal{
public:
virtual void sound() override{cout<<"wan!wan!"<<endl;};
void run(){...};
}
class Bird:public Animal{
public:
virtual void sound() override{cout<<"Ah!Ah!"<<endl;};
void fly(){...};
}
class AnimalFactory{
public:
static sharedPtr<Animal> makeAnimal(const string& type,const string& name){
Animal* animal = NULL;
if("dog"==type){
animal = new Dog();
}else if ("bird"==type){
animal = new Bird();
}
animal->setName(name);
return sharedPtr<Animal>(animal);
}
}
No comments:
Post a Comment