做电路方案设计的网站,网站建设08keji,网页微信注册新号怎么注册,电影vip网站建设步骤4. 抽象工厂#xff08;Abstract Factory#xff09;
Intent
提供一个接口#xff0c;用于创建 相关的对象家族 。
Class Diagram
抽象工厂模式创建的是对象家族#xff0c;也就是很多对象而不是一个对象#xff0c;并且这些对象是相关的#xff0c;也就是说必须一起…4. 抽象工厂Abstract Factory
Intent
提供一个接口用于创建 相关的对象家族 。
Class Diagram
抽象工厂模式创建的是对象家族也就是很多对象而不是一个对象并且这些对象是相关的也就是说必须一起创建出来。而工厂方法模式只是用于创建一个对象这和抽象工厂模式有很大不同。
抽象工厂模式用到了工厂方法模式来创建单一对象AbstractFactory 中的 createProductA() 和 createProductB() 方法都是让子类来实现这两个方法单独来看就是在创建一个对象这符合工厂方法模式的定义。
至于创建对象的家族这一概念是在 Client 体现Client 要通过 AbstractFactory 同时调用两个方法来创建出两个对象在这里这两个对象就有很大的相关性Client 需要同时创建出这两个对象。
从高层次来看抽象工厂使用了组合即 Cilent 组合了 AbstractFactory而工厂方法模式使用了继承。
Implementation
public class AbstractProductA {
}public class AbstractProductB {
}public class ProductA1 extends AbstractProductA {
}public class ProductA2 extends AbstractProductA {
}public class ProductB1 extends AbstractProductB {
}public class ProductB2 extends AbstractProductB {
}public abstract class AbstractFactory {abstract AbstractProductA createProductA();abstract AbstractProductB createProductB();
}public class ConcreteFactory1 extends AbstractFactory {AbstractProductA createProductA() {return new ProductA1();}AbstractProductB createProductB() {return new ProductB1();}
}public class ConcreteFactory2 extends AbstractFactory {AbstractProductA createProductA() {return new ProductA2();}AbstractProductB createProductB() {return new ProductB2();}
}public class Client {public static void main(String[] args) {AbstractFactory abstractFactory new ConcreteFactory1();AbstractProductA productA abstractFactory.createProductA();AbstractProductB productB abstractFactory.createProductB();// do something with productA and productB}
}JDK
javax.xml.parsers.DocumentBuilderFactoryjavax.xml.transform.TransformerFactoryjavax.xml.xpath.XPathFactory