Java 工厂方法模式

概要:

工厂方法模式去掉了简单工厂模式中工厂方法的静态属性,使得它可以被子类继承。这样在简单工厂模式里集中在工厂方法上的压力可以由工厂方法模式里不同的工厂子类来分担。

工厂方法模式由抽象工厂角色、具体工厂角色、抽象产品角色和具体产品角色组成。

抽象工厂角色是工厂方法模式的核心,它与应用程序无关,是具体工厂角色必须实现的接口或者必须继承的父类,它由抽象类或者接口来实现。

具体工厂角色含有与具体业务逻辑有关的代码。由应用程序调用以创建对应的具体产品的对象。抽象产品角色是具体产品继承的父类或者是实现的接口,一般由抽象类或者接口来实现。

具体产品角色由具体的类来实现。

| |目录

代码

package net.xsoftlab.baike;
interface Tour {// 旅游类
	public void visit();// 旅游方式
}
interface Visit {// 具体旅游方式
	public Tour visitStyle();
}
class GoAbroad implements Tour {// 出国旅游
	public void visit() {// 实现接口的方法
		System.out.println("咱们去国外旅游吧!");
	}
}
class Hangzhou implements Tour {// 杭州旅游
	public void visit() {
		System.out.println("杭州风景优美,咱去那吧");
	}
}
class Home implements Tour {// 在家
	public void visit() {
		System.out.println("唉,没有钱哪也去不了!");
	}
}
class GoAbroadVisit implements Visit {// 返回出国旅游对象
	public Tour visitStyle() {
		return new GoAbroad();
	}
}
class HangZhouVisit implements Visit {// 返回杭州旅游对象
	public Tour visitStyle() {
		return new Hangzhou();
	}
}
class HomeVisit implements Visit {// 返回在家对象
	public Tour visitStyle() {
		return new Home();
	}
}
public class TextMethodFactory {// 操作工厂方法模式的类
	public static void main(String[] args) {// java程序主入口处
		try {
			Visit visit = new HangZhouVisit();// 接口变量引用实现类对象
			Tour tour = visit.visitStyle();// 调用方法返回旅游实例
			System.out.println("今年咱们去哪旅游呀?");
			tour.visit();// 调用方法获得旅游方式
		} catch (Exception e) {// 捕获异常
			System.out.println("今年旅游计划取消?");
		} finally {// 代码总被执行
			System.out.println("......");
		}
	}
}


评论关闭
评论 还能输入200
评论关闭
评论 还能输入200
资料加载中...
已关注 , 取消