设计模式-工厂模式
2023-12-29 13:34:48
工厂模式是常用的设计模式之一,属于创建型模式,它提供了一种创建对象的最佳方式。
工厂模式提供了一种将对象实例化过程封装在工厂类中的方式。通过使用工厂模式,可以将对象的创建与使用代码分离。
在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。
一般可以将工厂模式分为三种,分别为 简单工厂、工厂方法和抽象工厂。
简单工厂模式
简单工厂不算是一个真正的设计模式,而更像是一种我们的编程习惯,但是在平时编码中这不失为一个简单的方法,可以将客户程序从具体类解耦。
工厂类拥有一个工厂方法(create),接受了一个参数,通过不同的参数实例化不同的产品类。以生产汽车为例,如图所示:
抽象产品:创建汽车接口。
具体产品:创建宝马汽车和奔驰汽车类,实现汽车接口。
工厂类:根据传入参数的不同,创建不同的具体产品,返回值为抽象产品接口。
/**
* 抽象产品接口
*/
public interface ICar {
void run();
}
/**
* 具体产品类 实现抽象接口
*/
public class Benz implements ICar{
@Override
public void run() {
System.out.println("Benz is running");
}
}
/**
* 具体产品类 实现抽象接口
*/
public class BMW implements ICar {
@Override
public void run() {
System.out.println("BMW is running");
}
}
/**
* 简单工厂(静态工厂)
*建立一个工厂类,对实现了同一接口的一些类进行实例的创建。
*优点是比较好理解,简单易操作。
*缺点是类的创建依赖工厂类,如果想要拓展程序,必须对工厂类进行修改,这违反了设计模式的开闭原则(OCP),即对扩展开放,对修改关闭。
*/
public class CarSimpleFactory {
public static ICar create(String type){
if(type.equals("BMW")){
return new BMW();
} else if (type.equals("Benz")) {
return new Benz();
}
return null;
}
}
/**
* 客户端调用测试
*/
public class Client {
public
文章来源:https://blog.csdn.net/quyingzhe0217/article/details/135288461
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!