UML类图:
代码示例:
//基类
public abstract class Animal
{
public string Name { get; set; }
public abstract void Run();
}
//子类1
public class Chicken : Animal
{
public override void Run()
{
Console.WriteLine("Chicken was running...");
}
}
//子类2
public class Dog : Animal
{
public override void Run()
{
Console.WriteLine("Dog was running...");
}
}
//工厂类
public class AnimalFactory
{
public Animal CreateAnimal(string animalType)
{
switch (animalType) //依靠字符串分类
{
case "chicken":
return new Chicken();
case "dog":
return new Dog();
default:
throw new Exception("Invalid param...");
}
}
}
Python代码:
>>> class Human:
... def GetDailyLife(self):
... raise NotImplimentedError("Abstract")
...
>>> class Man(Human):
... def GetDailyLife(self):
... return "Sure to game, playing and so on."
...
>>> class Woman(Human):
... def GetDailyLife(self):
... return "Shopping..."
...
>>> class HumanFactory:
... def GetHumanInstance(self, humanStr):
... if(humanStr=="man"):
... return Man()
... elif(humanStr=="woman"):
... return Woman()
... else:
... return None
...
>>> humanInstance=HumanFactory().GetHumanInstance('man')
>>> humanInstance.GetDailyLife()
'Sure to game, playing and so on.'
>>> humanInstance=HumanFactory().GetHumanInstance('woman')
>>> humanInstance.GetDailyLife()
'Shopping...'
>>>