源代码
package Pattern;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) { try { Visit visit=new HangZhouVisit(); //接口变量引用实现类对象 Tour tour=visit.visitStyle(); //调用方法返回旅游实例 System.out.println("今年咱们去哪儿旅游呀?"); tour.visit();//调用方法获得旅游方式 } catch (Exception e) { System.out.println("今年旅游计划取消?"); } finally{ System.out.println(".........."); } }}源程序解读1.程序中定义两个接口Tour、Visit,三个接口的实现类GoAbroad、Hangzhou、Home以及三个调用实现类的工厂类GoAbroadVisit、HangZhouVisit、HomeVisit2.可以看出使用工厂方法模式,使得对象的数量成倍增长。当旅游对象即接口的实现类非常多时,会出现大量的与之相应的工厂对象,这样成对的增长,又会使得代码的编写变得繁杂类似于旅游这种情况,当使用工厂方法模式变得比较繁杂时,可以考虑使用简单工厂模式
新闻热点
疑难解答