抽象工厂模式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了抽象工厂模式相关的知识,希望对你有一定的参考价值。

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

例子:

“工厂 职责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 }

 

以上是关于抽象工厂模式的主要内容,如果未能解决你的问题,请参考以下文章

设计模式学习——简单工厂模式工厂模式抽象工厂模式

设计模式 创建者模式 工厂设计模式 -- 抽象工厂设计模式介绍和实现

设计模式:抽象工厂模式

设计模式11:抽象工厂模式

C++工厂模式(简单工厂工厂方法抽象工厂)

C++工厂模式(简单工厂工厂方法抽象工厂)