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();
	}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值