`

java工厂方法模式

 
阅读更多

 工厂方法模式(Factory Method),定义一个用于创建对象的接口,让子类决定实例化哪 

一个类。工厂方法使一个类的实例化延迟到其子类。

工厂方法模式结构为:

 

 

public abstract class AbstractFacotry {
	public abstract Fruit productionFruit();
}

 

 

 

public class AppleFactory extends AbstractFacotry{

	@Override
	public Fruit productionFruit() {
		return new Apple("苹果");
	}

}

 

public class OrangeFactory extends AbstractFacotry{

	@Override
	public Fruit productionFruit() {
		return new Orange("橘子");
	}

}

 

public class PearFactory extends AbstractFacotry{

	@Override
	public Fruit productionFruit() {
		// TODO Auto-generated method stub
		return new Pear("梨");
	}

}

 

public class Apple extends Fruit {
	public Apple(String name,String colour) {
		this.name = name;
		this.colour = colour;
	}
	
	public Apple(String name) {
		this.name = name;
	}
	
	@Override
	public void showName() {
        System.out.println("水果名称为:"+this.name);
	}

	@Override
	public void showColour() {
		System.out.println("水果名颜色:"+this.colour);

	}

	@Override
	public void setColour(String colour) {
		this.colour = colour;
		
	}

}

 

public class Orange extends Fruit {
	
	public Orange(String name, String colour) {
		this.name = name;
		this.colour = colour;
	}
	
	public Orange(String name) {
		this.name = name;
	}

	@Override
	public void showName() {
        System.out.println("水果名称为:"+this.name);
	}

	@Override
	public void showColour() {
		System.out.println("水果名颜色:"+this.colour);

	}

	@Override
	public void setColour(String colour) {
		this.colour = colour;
		
	}
}

 

public class Pear extends Fruit {

	public Pear(String name, String colour) {
		this.name = name;
		this.colour = colour;
	}
	
	public Pear(String name) {
		this.name = name;
	}

	@Override
	public void showName() {
        System.out.println("水果名称为:"+this.name);
	}

	@Override
	public void showColour() {
		System.out.println("水果名颜色:"+this.colour);

	}

	@Override
	public void setColour(String colour) {
		this.colour = colour;
		
	}
}

 

	public static void main(String[] args) {
		 AbstractFacotry af = new AppleFactory();
		 Fruit productionFruit = af.productionFruit();
		 productionFruit.setColour("red");
		 productionFruit.showName();
		 productionFruit.showColour();
		 
		 
		 AbstractFacotry pear = new PearFactory();
		 Fruit pear1 = pear.productionFruit();
		 pear1.setColour("yellow");
		 pear1.showName();
		 pear1.showColour();
	}

 

  • 大小: 38.6 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics