抽象工厂模式---冰淇淋

冰淇淋有进口和出口两种渠道获得,口味也有苹果味和香蕉味。

IceCreamFactory.java

package ice;

public abstract class IceCreamFactory {
	 public abstract DomesticIceCream produceDomesticIceCream();  
     
	 public abstract ImportedIceCream produceImportedIceCream();  
}

DomesticIceCream.java

package ice;

public interface DomesticIceCream {
	public void taste(); 
}

ImportedIceCream.java

package ice;

public interface ImportedIceCream {
	public void taste();
}

AppleDomesticIceCream.java

package ice;

public class AppleDomesticIceCream implements DomesticIceCream {

	@Override
	public void taste() {
		// TODO Auto-generated method stub
		 System.out.println("国产冰淇淋---苹果味");
	}

}

AppleImportedIceCream.java

package ice;

public class AppleImportedIceCream implements ImportedIceCream {

	@Override
	public void taste() {
		// TODO Auto-generated method stub
		System.err.println("进口冰淇淋--苹果味");
	}

}

AppleIceCreamFactory.java

package ice;

public class AppleIceCreamFactory extends IceCreamFactory {

	@Override
	public DomesticIceCream produceDomesticIceCream() {
		// TODO Auto-generated method stub
		return new AppleDomesticIceCream();
	}

	@Override
	public ImportedIceCream produceImportedIceCream() {
		// TODO Auto-generated method stub
		return  new AppleImportedIceCream();
	}

}

BananaDomesticIceCream.java

package ice;

public class BananaDomesticIceCream implements DomesticIceCream {

	@Override
	public void taste() {
		// TODO Auto-generated method stub
		 System.out.println("国产冰淇淋---香蕉味");
	}

}

BananaImportedIceCream.java

package ice;

public class BananaImportedIceCream implements ImportedIceCream {

	@Override
	public void taste() {
		// TODO Auto-generated method stub
		 System.out.println("进口冰淇淋---香蕉味");
	}

}

BananaIceCreamFactory.java

package ice;

public class BananaIceCreamFactory extends IceCreamFactory {

	@Override
	public DomesticIceCream produceDomesticIceCream() {
		// TODO Auto-generated method stub
		return new BananaDomesticIceCream();
	}

	@Override
	public ImportedIceCream produceImportedIceCream() {
		// TODO Auto-generated method stub
		return new BananaImportedIceCream();
	}

}

Client.java

package ice;

public class Client {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		 IceCreamFactory  appleIceCreamFactory = new AppleIceCreamFactory();   
		 ImportedIceCream apple1 = appleIceCreamFactory.produceImportedIceCream();           
		 apple1.taste();  
		 
		 IceCreamFactory  bananaIceCreamFactory = new BananaIceCreamFactory();   
		 DomesticIceCream banana1 = bananaIceCreamFactory.produceDomesticIceCream();         
		 banana1.taste();
	}
}
经验分享 程序员 微信小程序 职场和发展