java设计模式第三发:抽象工厂模式

抽象工厂模式的主要优点包括:

使得客户端代码与具体产品的实现分离,客户端不需要知道具体产品的类名,只需要知道它们所对应的工厂即可,降低了客户端与具体产品的耦合度。

更容易实现一组产品族的创建,只需要在抽象工厂中添加一个新的接口方法即可,同时也符合开闭原则。

符合单一职责原则,每个具体工厂只负责创建一组具体产品,不会与其他产品产生耦合。

总的来说,抽象工厂模式能够提供更高层次的抽象,同时也能够更好地管理不同产品族之间的关系,从而使得系统更加灵活和易于扩展。

以下是使用Java语言实现抽象工厂模式的示例代码:

首先,定义产品接口:

public interface Product {
void showInfo();
}
然后,定义两种具体的产品类:
public class ConcreteProductA implements Product {
	@Override
	public void showInfo() {
	System.out.println("This is Concrete Product A.");
	}
}

public class ConcreteProductB implements Product {
	@Override
	public void showInfo() {
	System.out.println("This is Concrete Product B.");
	}
}
接着,定义抽象工厂接口:
public interface AbstractFactory {
	Product createProductA();
	Product createProductB();
}
然后,定义两种具体的工厂类:
public class ConcreteFactory1 implements AbstractFactory {
	@Override
	public Product createProductA() {
	return new ConcreteProductA();
	}
	@Override
	public Product createProductB() {
	return new ConcreteProductB();
	}
}
public class ConcreteFactory2 implements AbstractFactory {
	@Override
	public Product createProductA() {
	return new ConcreteProductB();
	}
	@Override
	public Product createProductB() {
	return new ConcreteProductA();
	}
}
最后,编写测试代码:
public class AbstractFactoryDemo {
  public static void main(String[] args) {
    AbstractFactory factory1 = new ConcreteFactory1();
    Product productA1 = factory1.createProductA();
    productA1.showInfo();
    Product productB1 = factory1.createProductB();
    productB1.showInfo();
    AbstractFactory factory2 = new ConcreteFactory2();
    Product productA2 = factory2.createProductA();
    productA2.showInfo();
    Product productB2 = factory2.createProductB();
    productB2.showInfo();
 }
}

在这个示例中,我们定义了两个具体的产品类ConcreteProductA和ConcreteProductB,它们都实现了Product接口,并分别实现了showInfo方法。然后,我们定义了抽象工厂接口AbstractFactory,它包含了两个方法createProductA和createProductB。接下来,我们定义了两个具体的工厂类ConcreteFactory1和ConcreteFactory2,它们都实现了AbstractFactory接口,并分别实现了createProductA和createProductB方法,返回不同的具体产品对象。最后,我们编写了测试代码,使用不同的工厂对象分别创建不同的产品对象,并调用它们的showInfo方法输出信息。

通过使用抽象工厂模式,我们可以将产品对象的创建过程与客户端代码分离开来,使得客户端只需要知道具体的工厂类和抽象产品类,而不需要关心具体的产品类。这种解耦合的方式可以更加灵活地设计和扩展系统。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值