三,工厂模式——抽象工厂模式
发布时间:2020-12-13 21:15:10 所属栏目:PHP教程 来源:网络整理
导读:1 抽象工厂模式 抽象工厂模式是所有形态的工厂模式中最为抽象和最具有1般性的1种形态。该模式面对的是多个产品等级结构的系统设计。工厂方法模式针对的是1个产品等级结构;而抽象工厂模式则需要面对多个产品等级结构。 1个产品等级结构图 多个产品等级结构图
1 抽象工厂模式抽象工厂模式是所有形态的工厂模式中最为抽象和最具有1般性的1种形态。该模式面对的是多个产品等级结构的系统设计。工厂方法模式针对的是1个产品等级结构;而抽象工厂模式则需要面对多个产品等级结构。 1个产品等级结构图 多个产品等级结构图 1.2 产品族产品族是指位于不同产品等级结构中,功能相干联的产品组成的家族。 用相图的情势表现生产品族与产品等级结构的关系 在抽象工厂模式中,每个产品族都有1个具体工厂,而每个具体工厂负责创建属于同1个产品族,但是分属于不同等级结构的产品。 1.3 抽象工厂触及到的角色
2 甚么情况下使用抽象工厂模式
3 抽象工厂的实现农场公司要引进塑料大棚的技术,在大棚里种植热带和亚热带的水果和蔬菜。在这里水果和蔬菜就是两个等级结构,而热带的水果和热带的蔬菜是1个产品族,亚热带的水果和亚热带的蔬菜又是1个产品族。 用类图表示为 部份代码实现 package com.designpattern.abstractfactory; /** * Created by Administrator on 2016/9/19. */ public interface Fruits { String getName(); void setName(String name); } package com.designpattern.abstractfactory; /** * Created by Administrator on 2016/9/19. */ public interface Vegetables { String getName(); void setName(String name); } package com.designpattern.abstractfactory; /** * Created by Administrator on 2016/9/19. */ public class SubtropicalFruit implements Fruits{ private String name; SubtropicalFruit(String name){ this.name = name; } public void setName(String name) { this.name = name; } public String getName() { return name; } } package com.designpattern.abstractfactory; /** * Created by Administrator on 2016/9/19. */ public class SubtropicalVegetable implements Vegetables{ private String name; SubtropicalVegetable(String name){ this.name = name; } @Override public String getName() { return null; } @Override public void setName(String name) { this.name = name; } } package com.designpattern.abstractfactory; /** * Created by Administrator on 2016/9/19. */ public class SubtropicalFactory implements IFatory{ public static Fruits createFruit(String name){ return new SubtropicalFruit(name); } public static Vegetables createVegetable(String name){ return new SubtropicalVegetable(name); } } package com.designpattern.abstractfactory; /** * Created by Administrator on 2016/9/19. */ public class Client { public static void main(String args[]){ Fruits fruit = SubtropicalFactory.createFruit("香蕉"); System.out.println(fruit.getName()); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |