zoukankan      html  css  js  c++  java
  • 03抽象工厂模式AbstractFactory

    一、什么是抽象工厂模式

      抽象工厂模式是所有形态的工厂模式中最为抽 象和最其一般性的。抽象工厂模式可以向客户端 提供一个接口,使得客户端在不必指定产品的具 体类型的情况下,能够创建多个产品族的产品对 象。

    二、产品族和产品等级结构

    三、模式中包含的角色及其职责

      1.抽象工厂(Creator)角色 抽象工厂模式的核心,包含对多个产品结构的声明,任何工厂类都必须实现这个接口。

      2.具体工厂( Concrete Creator)角色 具体工厂类是抽象工厂的一个实现,负责实例化某个产品族中的产品对象。

       3.抽象(Product)角色 抽象模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。

      4.具体产品(Concrete Product)角色 抽象模式所创建的具体实例对象 总结:抽象工厂中方法对应产品结构,具体工厂对应产品族。

    抽象苹果  实现水果

    1 public abstract class Apple implements Fruit{
    2     /*
    3      * 采集
    4      */
    5     public abstract void get();
    6 }

    抽象香蕉  实现水果

    1 public abstract class Banana implements Fruit{
    2     /*
    3      * 采集
    4      */
    5     public abstract void get();
    6 }

    水果接口

    1 public interface Fruit {
    2     /*
    3      * 采集
    4      */
    5     public void get();
    6 }

    水果工厂接口

    1 public interface FruitFactory {
    2     //实例化Apple
    3     public Fruit getApple();
    4     //实例化Banana
    5     public Fruit getBanana();
    6 }

    北方苹果  继承苹果

    1 public class NorthApple extends Apple {
    2 
    3     public void get() {
    4         System.out.println("采集北方苹果");
    5     }
    6 }

    北方香蕉  继承香蕉

    1 public class NorthBanana extends Banana {
    2 
    3     public void get() {
    4         System.out.println("采集北方香蕉");
    5     }
    6 }

    北方水果工厂  实现水果工厂

     1 public class NorthFruitFactory implements FruitFactory {
     2 
     3     public Fruit getApple() {
     4         return new NorthApple();
     5     }
     6 
     7     public Fruit getBanana() {
     8         return new NorthBanana();
     9     }
    10 }

    南方苹果  继承苹果

    1 public class SouthApple extends Apple {
    2 
    3     public void get() {
    4         System.out.println("采集南方苹果");
    5     }
    6 }

    南方香蕉  继承香蕉

    1 public class SouthBanana extends Banana {
    2 
    3     public void get() {
    4         System.out.println("采集南方香蕉");
    5     }
    6 }

    南方水果工厂  实现水果工厂

     1 public class SouthFruitFactory implements FruitFactory {
     2 
     3     public Fruit getApple() {
     4         return new SouthApple();
     5     }
     6 
     7     public Fruit getBanana() {
     8         return new SouthBanana();
     9     }
    10 }

    温室苹果  继承苹果

    1 public class WenshiApple extends Apple {
    2 
    3     public void get() {
    4         System.out.println("采集温室苹果");
    5     }
    6 }

    温室香蕉  继承香蕉

    1 public class WenshiBanana extends Banana {
    2 
    3     public void get() {
    4         System.out.println("采集温室香蕉");
    5     }
    6 }

    温室水果工厂  实现水果工厂

     1 public class WenshiFruitFactory implements FruitFactory {
     2 
     3     public Fruit getApple() {
     4         return new WenshiApple();
     5     }
     6 
     7     public Fruit getBanana() {
     8         return new WenshiBanana();
     9     }
    10 }
  • 相关阅读:
    Oracle中查看所有表和字段以及表注释.字段注释
    利用Excel表格中的宏,轻松提取首字母
    IntelliJ IDEA 14 注册码
    oracle initialization or shutdown in progress解决方法
    IIS6.0 IIS7.5应用程序池自动停止的解决方法
    Yii1.1测试环境配置(一)
    流行界面库
    delphi image控件上画矩形的问题
    delphi中TQueue的使用问题
    ShellExecute函数的问题
  • 原文地址:https://www.cnblogs.com/justdoitba/p/9031725.html
Copyright © 2011-2022 走看看