工厂模式分为两种,一种是工厂方法,一种是抽象工厂。
工厂方法:定义一个创建方法,让子类来决定创建哪个具体的对象。
例子:
public abstract Animal()
{
private Animal animal;
public Animal create(string name);
public void show();
}
public class bird extends Animal
{
public Animal create(string name)
{
if( name == "bird" )
{
animal = new bird() ;
return animal ;
}
}
public void show()
{
system.oout.println("i am a bird!") ;
}
}
public class pig extends Animal
{
public Animal create(string name)
{
if( name == "pig" )
{
animal = new pig() ;
return animal ;
}
}
public void show()
{
system.oout.println("i am a pig!") ;
}
}
public class test
{
public static void main(0
{
Animal animal = new Animal() ;
animal.create("bird") ;
animal.show() ;
}
}
抽象工厂:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
例子:
public abstract class Animal
{
public void show();
}
public class bird extends Animal
{
public void show()
{
system.out.println("i am a bird!") ;
}
}
public class pig extends Animal
{
public void show()
{
system.out.println("i am a bird!") ;
}
}
public abstract class CreateFactory
{
public Animal create() ;
}
public class BirdCreateFactory extends CreateFactory
{
public Animal create()
{
return new bird() ;
}
}
public class PigCreateFactory extends CreateFactory
{
public Animal create()
{
return new pig() ;
}
}
public class Test
{
public static void main()
{
CreateFactory createFactory = new BirdCreateFactory();
CreateFactory createFactory1 = new PigCreateFactory();
Animal animal = createFactory.create() ;
Animal animal2 = createFactory1.create() ;
animal.show() ;
animal2.show() ;
return ;
}
}