package com.yanyu.FactoryMethod;
public interface CoffeeFactory {
Coffee createCoffee();
}
具体工厂:
java复制代码
public class LatteCoffeeFactory implements CoffeeFactory {
public Coffee createCoffee() {
return new LatteCoffee();
}
}
public class AmericanCoffeeFactory implements CoffeeFactory {
public Coffee createCoffee() {
return new AmericanoCoffee();
}
}
咖啡店类:
java复制代码
package com.yanyu.FactoryMethod;
public class CoffeeStore {
private CoffeeFactory factory;
public void SetFactory(CoffeeFactory factory) {
this.factory = factory;
}
public Coffee orderCoffee() {
Coffee coffee = factory.createCoffee();
coffee.addMilk();
coffee.addSugar();
return coffee;
}
}
测试
java复制代码
package com.yanyu.FactoryMethod;
public class client {
public static void main(String[] args) {
// 创建咖啡店对象
CoffeeStore store = new CoffeeStore();
//创建工厂对象
CoffeeFactory factory = new AmericanCoffeeFactory();
store.SetFactory(factory);
// 点咖啡
Coffee coffee = store.orderCoffee();
System.out.println(coffee.getName());
}
}
package com.yanyu.AbstractFactory;
public abstract class Dessert {
public abstract void show();
}
具体工厂:
java复制代码
//美式甜点工厂
public class AmericanDessertFactory implements DessertFactory {
public Coffee createCoffee() {
return new AmericanCoffee();
}
public Dessert createDessert() {
return new MatchaMousse();
}
}
//意大利风味甜点工厂
public class ItalyDessertFactory implements DessertFactory {
public Coffee createCoffee() {
return new LatteCoffee();
}
public Dessert createDessert() {
return new Tiramisu();
}
}
具体类:
java复制代码
package com.yanyu.AbstractFactory;
public class Trimisu extends Dessert {
public void show() {
System.out.println("提拉米苏");
}
}
package com.yanyu.AbstractFactory;
public class MatchaMousse extends Dessert {
public void show() {
System.out.println("抹茶慕斯");
}
}
test
java复制代码
package com.yanyu.AbstractFactory;
public class Client {
public static void main(String[] args) {
// 创建的是意大利风味甜品工厂对象
// ItalyDessertFactory factory = new ItalyDessertFactory();
AmericanDessertFactory factory = new AmericanDessertFactory();
// 获取拿铁咖啡和提拉米苏甜品
Coffee coffee = factory.createCoffee();
Dessert dessert = factory.createDessert();
System.out.println(coffee.getName()); dessert.show();
}
}
public class Demo {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("令狐冲");
list.add("风清扬");
list.add("任我行");
//获取迭代器对象
Iterator<String> it = list.iterator();
//使用迭代器遍历
while(it.hasNext()) {
String ele = it.next();
System.out.println(ele);
}
}
}
package step1;
public interface TV {
void play();
}
ConcreteProduct:具体产品角色
java复制代码
package step1;
public class HaierTV implements TV/**填空------------------------------**/{
@Override
public void play() {
System.out.println("海尔电视机播放中......");
}
}
java复制代码
package step1;
public class HisenseTV implements TV/**填空------------------------------**/{
@Override
public void play() {
System.out.println("海信电视机播放中......");
}
}
Factory:工厂角色
java复制代码
package step1;
public class TVFactory {
public static TV produceTV(String brand) throws Exception
{
if(brand.equalsIgnoreCase("Haier"))
{
System.out.println("电视机工厂生产海尔电视机!");
/******填空******/
return new HaierTV();
/************/
}
else if(brand.equalsIgnoreCase("Hisense"))
{
System.out.println("电视机工厂生产海信电视机!");
/******填空******/
return new HisenseTV();
/************/
}
else
{
throw new Exception("对不起,暂不能生产该品牌电视机!");
}
}
}
package step2;
/********** Begin *********/
public interface Airsensor {
public abstract void Work();
}
/********** End *********/
IOTFactory.java
java复制代码
package step2;
/********** Begin *********/
public interface IOTFactory {
Airsensor produceAirsensor();
Lightsensor produceLightsensor();
Soilsensor produceSoilsensor();
}
/********** End *********/
Lightsensor.java
java复制代码
package step2;
/********** Begin *********/
public interface Lightsensor {
public abstract void Work();
}
/**** End *********/
MeshAir.java
java复制代码
package step2;
/********** Begin *********/
public class MeshAir implements Airsensor {
public void Work(){
System.out.println("mesh空气传感器正常工作中");
}
}
/********** End *********/
MeshFactory.java
java复制代码
package step2;
/********** Begin *********/
public class MeshFactory implements IOTFactory {
public Airsensor produceAirsensor() {
return new MeshAir();
}
public Lightsensor produceLightsensor() {
return new MeshLight();
}
public Soilsensor produceSoilsensor() {
return new MeshSoil();
}
}
/********** End *********/
MeshLight.java
java复制代码
package step2;
/********** Begin *********/
public class MeshLight implements Lightsensor {
public void Work() {
System.out.println("mesh光照传感器正常工作中");
}
}
/********** End *********/
MeshSoil.java
java复制代码
package step2;
/********** Begin *********/
public class MeshSoil implements Soilsensor {
public void Work() {
System.out.println("mesh土壤传感器正常工作中");
}
}
/********** End *********/
Soilsensor.java
java复制代码
package step2;
/********** Begin *********/
public interface Soilsensor {
public abstract void Work() ;
}
/********** End *********/
ZigbeeAir.java
java复制代码
package step2;
/********** Begin *********/
public class ZigbeeAir implements Airsensor {
public void Work() {
System.out.println("zigbee空气传感器正常工作中");
}
}
/********** End *********/
ZigbeeFactory.java
java复制代码
package step2;
/********** Begin *********/
public class ZigbeeFactory implements IOTFactory {
public Airsensor produceAirsensor() {
return new ZigbeeAir();
}
public Lightsensor produceLightsensor() {
return new ZigbeeLight();
}
public Soilsensor produceSoilsensor (){
return new ZigbeeSoil();
}
}
/********** End *********/
ZigbeeLight.java
java复制代码
package step2;
/********** Begin *********/
public class ZigbeeLight implements Lightsensor {
public void Work() {
System.out.println("zigbee光照传感器正常工作中");
}
}
/********** End *********/
ZigbeeSoil.java
java复制代码
package step2;
/********** Begin *********/
public class ZigbeeSoil implements Soilsensor {
public void Work() {
System.out.println("zigbee土壤传感器正常工作中");
}
}
/********** End *********/
Client.java
java复制代码
package step3;
public class Client {
public static void main(String args[])
{
try
{
TV tv;
TVFactory factory;
factory=(TVFactory)XMLUtil.getBean();
tv=factory.produceTV();
tv.play();
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
}
}