|
ToDo:
|
Factory method pattern - WikipediaのC#のコードを焼き直してみました。
FactoryでIPeronを返そうとするとsizeが未定だと怒られたのでBoxで包んじゃいました。
trait IPerson{
fn get_name(&self) -> String;
}
struct Villager;
impl IPerson for Villager{
fn get_name(&self) -> String{
"Village Person".to_string()
}
}
struct CityPerson;
impl IPerson for CityPerson{
fn get_name(&self) -> String{
"City Person".to_string()
}
}
enum PersonType{
Rural,
Urban
}
struct Factory;
impl Factory {
fn get_person(typ: PersonType) -> Box<IPerson> {
match typ {
PersonType::Rural => Box::new(Villager),
PersonType::Urban => Box::new(CityPerson),
}
}
}
fn main(){
let p1 = Factory::get_person(PersonType::Rural);
let p2 = Factory::get_person(PersonType::Urban);
println!("{}",p1.get_name());
println!("{}",p2.get_name());
}
今年は中止でしたー。