工厂模式:通过将对象的创建过程封装在一个工厂类中,以解耦对象的使用者和具体的对象创建过程,提供了一种灵活、可扩展和易维护地方式来实例化对象。是面向对象设计中常用且强大的设计模式之一。通过使用工厂模式,我们可以隐藏对象的创建细节,提供一个统一的入口来获取需要的对象。这样,在需要改变具体对象实现时,只需修改对应的具体工厂即可,而无需修改使用该对象的代码。
工厂模式主要角色:
1. 工厂接口:定义了创建对象的方法,可以是抽象类或接口。
2. 具体工厂:实现了工厂接口,并负责实际创建具体的对象。
3. 产品接口:定义了产品对象的方法。
4. 具体产品:实现了产品接口,并定义了具体的业务逻辑。
拓展:BeanFactory spring 最顶级接口 beanfactory详解-CSDN博客
简单示例
public interface Phone {
void showBrand();
void call();
}
public class ApplePhone implements Phone{
@Override
public void showBrand() {
System.out.println("brand is apple");
}
@Override
public void call() {
System.out.println("call with apple phone ");
}
}
public class HuaWeiPhone implements Phone{
@Override
public void showBrand() {
System.out.println("brand is huawei");
}
@Override
public void call() {
System.out.println("make call with huawei");
}
}
public class PhoneFactory {
public static Phone getPhone(Class<? extends Phone> phoneType) {
try {
return phoneType.getDeclaredConstructor().newInstance();
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
public class Demo {
public static void main(String[] args) {
Phone phone = PhoneFactory.getPhone(HuaWeiPhone.class);
phone.showBrand();
Phone phone1 = PhoneFactory.getPhone(ApplePhone.class);
phone1.showBrand();
}
}