Abstract Factory(抽象工厂模式)

名  称 
Abstract Factory(抽象工厂模式) 

意  图 
提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 

适  用 

环  境 
一个系统要独立于它的产品的创建、组合和表示时。 

一个系统要由多个产品系列中的一个来配置时。 

当你要强调一系列相关的产品对象的设计以便进行联合使用时。 

当你提供一个产品类库,而只想显示它们的接口而不是实现时。 

结  构 

Abstract Factory(抽象工厂模式)_第1张图片

 

示意性源码:

//抽象工厂 package abstractfactory; public interface AbstractFactory { } //抽象产品 package abstractfactory; public interface Product { } //产品A package abstractfactory; public class ProductA implements Product { private String name; private String producer; public ProductA(String name, String producer) { this.name = name; this.producer = producer; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getProducer() { return producer; } public void setProducer(String producer) { this.producer = producer; } @Override public String toString() { return "产品名称:" + name + "生产者:" + producer; } } //产品B package abstractfactory; public class ProductB implements Product { private String name; private String producer; public ProductB(String name, String producer) { this.name = name; this.producer = producer; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getProducer() { return producer; } public void setProducer(String producer) { this.producer = producer; } @Override public String toString() { return "产品名称:" + name + "生产者:" + producer; } } //生产优质产品的工厂 package abstractfactory; public class GoodProductFactory { public ProductA createA() { return new ProductA("Good A", "wkcgy"); } public ProductB createB() { return new ProductB("Good B", "wkcgy"); } } //生产劣质产品的地方 package abstractfactory; public class BadProductFactory { public ProductA createA() { return new ProductA("Bad A", "wkcgy"); } public ProductB createB() { return new ProductB("Bad B", "wkcgy"); } } //测试方法 package abstractfactory; public class Main { public static void main(String[] args) { //goog a ProductA goodA = new GoodProductFactory().createA(); //bad a ProductA badA = new BadProductFactory().createA(); //good b ProductB goodB = new GoodProductFactory().createB(); //bad b ProductB badB = new BadProductFactory().createB(); System.out.println(goodA); System.out.println(goodB); System.out.println(badA); System.out.println(badB); } }  

你可能感兴趣的:(String,测试,Class,interface,产品,Bada)