博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式二—工厂方法模式
阅读量:5795 次
发布时间:2019-06-18

本文共 1704 字,大约阅读时间需要 5 分钟。

设计模式二—工厂方法模式

一、工厂方法模式优点

良好的封装性

优秀的可扩展性

屏蔽产品类

典型的解耦架构

 

二、实例

 

三、实例代码

1、Fruit.java

public interface Fruit {

   /*

    * 生长

    * 收获

    * 栽种

    */

   public void grow();

   public void harvest();

   public void plant();

}

 

2、FruitGardener.java

public interface FruitGardener {

   /*

    * 水果园丁

    * 建立水果工厂的方法

    */

  

   public Fruit factory();

  

  

}

3、Apple.java

public class Apple implements Fruit {

 

   private int treeAge;

  

   public void grow() {

     System.out.println("苹果正在生长,,,");

   }

 

  

   public void harvest() {

     System.out.println("收获苹果");

   }

 

  

   public void plant() {

     System.out.println("栽种苹果");

   }

 

 

   public int getTreeAge() {

     return treeAge;

   }

 

 

   public void setTreeAge(int treeAge) {

     this.treeAge = treeAge;

   }

  

  

 

}

4、Grape.java

public class Grape implements Fruit {

   private boolean seedless;

  

   public void grow() {

     System.out.println("葡萄正在生长。。。");

   }

 

   public void harvest() {

     System.out.println("收获葡萄。");

   }

 

   public void plant() {

     System.out.println("栽种葡萄。");

   }

 

   public boolean isSeedless() {

     return seedless;

   }

 

   public void setSeedless(boolean seedless) {

     this.seedless = seedless;

   }

  

  

 

}

5、AppleGardener.java

public class AppleGardener implements FruitGardener {

 

   public Fruit factory() {

     return new Apple();

   }

 

}

 

 

6、GrapeGardener.java

public class GrapeGardener implements FruitGardener {

 

   public Fruit factory() {

     return new Grape();

   }

 

}

 

7、ClientDemo.java

public class ClientDemo {

 

   public static void main(String[] args) {

     //苹果园丁工厂

     FruitGardener fruitGardener=new AppleGardener();

     //通过工厂生产苹果

     Fruit apple = fruitGardener.factory();//用接口代替了实现实例

     apple.plant();

     apple.grow();

     apple.harvest();

 

     //葡萄园丁工厂

     fruitGardener=new AppleGardener();

     //通过工厂生产葡萄

     Fruit grape = fruitGardener.factory();//用接口代替了实现实例

     grape.plant();

     grape.grow();

     grape.harvest();

 

   }

 

}

 

 

四、实例结果

栽种苹果

苹果正在生长,,,

收获苹果

栽种苹果

苹果正在生长,,,

收获苹果

 

转载地址:http://hhffx.baihongyu.com/

你可能感兴趣的文章
左右补0 左右补空格
查看>>
Android SDK 字段及功能的分析详解
查看>>
微信小程序把玩(二十五)loading组件
查看>>
微信小程序把玩(二十四)toast组件
查看>>
Mysql常用命令
查看>>
hadoop 需要注意的地方
查看>>
Varnish缓存策略及缓存时间计算方法说明
查看>>
eclipse 字体设置 Courier New字
查看>>
Month
查看>>
Oschina第一帖
查看>>
bash的位置参数轮替(shift)
查看>>
GlusterFS管理员手册
查看>>
HYPER-V 的安装
查看>>
netstat命令详解
查看>>
我的个人网站,多多支持啊,欢迎交换链接
查看>>
ssh反向代理设置
查看>>
Linux -shopt -s extglob
查看>>
为什么程序员的社会地位不高?
查看>>
windows find和findstr命令
查看>>
MyISAM与InnoDB的区别
查看>>