抽象工厂模式
模式定义:定义一个用于创建对象的接口,让子类决定实例话哪一个类。Factory Method使得一个类的实例化延迟到之类

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| public class FactoryMethod { public static void main(String[] args) { Application application = new ConcreteProductA(); Product product = application.getObject(); product.method(); } } interface Product{ public void method(); } class ProductA implements Product{ @Override public void method() { System.out.println("前路漫漫亦灿灿😁"); } } class ProductB implements Product{ @Override public void method() {} } abstract class Application{ abstract Product createProduct(); Product getObject(){ Product product = createProduct(); return product; } } class ConcreteProductA extends Application{ @Override Product createProduct() { return new ProductA(); } }
class ConcreteProductB extends Application{ @Override Product createProduct() { return new ProductB(); } }
|
应用场景:
1.当你不知道该使用对象的确切类型的时候
2.当你希望为库或框架提供扩展其内部组件的方法时
主要优点:
1.将具体产品和创建者耦合
2.符合单一职责原则
3.符合开闭原则
源码中的应用:
1 2 3 4 5 6 7
| Calendar.getInstance() java.text.NumberFormat.getInstance() java.util.ResourceBundle.getBundle()
java.net.URLStreamHandlerFactory javax.xml.bind.JAXBContext#createMarshaller
|