码迷,mamicode.com
首页 > 其他好文 > 详细

抽象工厂模式

时间:2016-03-30 19:39:25      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:

相对于 工厂模式, 抽象工厂模式 中的 抽象工厂类、实际工厂类  不再负责单一的职责。

例子:

“工厂 职责1”

1 public interface Translate {
2     public void say(String txt);
3 }
1 public class ChineseTranslate implements Translate {
2 
3     @Override
4     public void say(String txt) {
5         System.out.println("你好:" + txt);
6 
7     }
8 
9 }
1 public class EnglishTranslate implements Translate {
2 
3     @Override
4     public void say(String txt) {
5         System.out.println("hello:" + txt);
6 
7     }
8 
9 }

“工厂 职责2”

1 public interface Understand {
2     public void doUnderstand(String txt);
3 }
1 public class ChineseUnderstand implements Understand {
2 
3     @Override
4     public void doUnderstand(String txt) {
5       System.out.println("理解"+txt);
6 
7     }
8 
9 }
1 public class EnglishUnderstand implements Understand{
2 
3     @Override
4     public void doUnderstand(String txt) {
5          System.out.println("understand"+txt);
6         
7     }
8 
9 }

抽象工厂类

 1 public abstract class Factory {
 2  public abstract Translate getTranslate();
 3  public abstract Understand getUnderstand();
 4  public void doSomething(String txt){
 5      Translate translate=getTranslate();
 6      Understand understand=getUnderstand();
 7      translate.say(txt);
 8      understand.doUnderstand(txt);
 9  }
10 }

具体工厂类

 1 public class ChineseFactory extends Factory {
 2 
 3     @Override
 4     public Translate getTranslate() {
 5         // TODO 自动生成的方法存根
 6         return new ChineseTranslate();
 7     }
 8 
 9     @Override
10     public Understand getUnderstand() {
11         // TODO 自动生成的方法存根
12         return new ChineseUnderstand();
13     }
14 
15 }
 1 public class EnglishFactory extends Factory {
 2 
 3     @Override
 4     public Translate getTranslate() {
 5         // TODO 自动生成的方法存根
 6         return new EnglishTranslate();
 7     }
 8 
 9     @Override
10     public Understand getUnderstand() {
11         // TODO 自动生成的方法存根
12         return new EnglishUnderstand();
13     }
14 
15 }

客户端调用

 1 public interface Client {
 2     public static void main(String[] args) {
 3          /*抽象工厂模式,相对于一个工厂模式,一个工厂不再仅负责单一的产品,处理更多的任务*/
 4          /*相对于 创建者模式,  抽象工厂的 拼接(联系处理)不够灵活*/
 5          Factory factory = new ChineseFactory();
 6          factory.doSomething("测试");
 7          factory = new EnglishFactory();
 8          factory.doSomething("test");
 9      
10          
11     }
12 }

 

抽象工厂模式

标签:

原文地址:http://www.cnblogs.com/ChuangZhang/p/5338335.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!