java设计模式:工厂模式

工厂模式

1、作用:实现了创建者和调用者的分离,方便调用者。调用者只需携带调用的需求访问工厂即可获取满足其需求的对象,而对象创建的过程无需调用者过问。
2、详细分类:

  • 简单工厂模式
  • 工厂方法模式
  • 抽象工厂模式

3、满足OOP七大原则:

  • 开闭原则:一个软件实体应当对扩展开放,对修改关闭
  • 依赖倒转原则:要针对接口编程,不要针对实现编程
  • 迪米特法则:只与你直接的朋友通信,而避免和陌生人通信

4、本质:

  1. 实例化对象不适用new,用工厂的方法代替
  2. 将选择实现类,创建对象统一管理和控制。从而将调用者跟我们的实现类解耦

各种工厂模式代码

以Car接口为例

public interface Car{	//Car接口
	void name();
}
public class WuLing implements Car{	//实现类一
	void name(){
		System.out.println("五菱宏光");
	}
}
public class Tesla implements Car{ 	//实现类二
	void name(){
		System.out.println("特斯拉");
	}
}

简单工厂模式

使用一个工厂类来生产对应接口的所有实现类

实现方式一:

使用一个静态方法,根据输入参数即可获取满足需求的该接口(类)的实现类(子类)

public class CarFactory{
	public static Car getCar(String name){
		if("五菱宏光".equals(name)){
			return new WuLing();
		}else if("特斯拉".equals(name)){
			return new Tesla();
		}
	}
}
实现方式二:

为每一种实现类提供一种静态方法

public class CarFactory{
	public static Car getWuLing(){
		return new WuLing();
	}
	public static Car getTesla(){
		return new Tesla();
	}
}

优点:结构简单、代码简单、易于管理、常用于实际业务
缺点:扩展时违反开闭原则问题,方式一需要修改方法,方式二需要修改类

工厂方法模式

为每一种实现类创建各自的工厂。不仅实现类有统一的Car接口,这些工厂也有统一的Factory接口。

public class WuLingFactory{	//为五菱宏光单独造个工厂
	public static Car getCar(){
		return new WuLing();
	}
}
public class WuLingFactory{
	public static Car getCar(){
		return new WuLing();
	}
}

优点:扩展新的实现类时无需对现有的类做修改,满足开闭原则。每个Car有接口,每个工厂也有接口,满足依赖倒转原则
缺点:为每一个实现类都加一个工厂,开销太大。结构复杂、代码复杂、不易于管理

抽象工厂模式

手机产品接口

public interface IphoneProduct{
	void start();
	void shutdown();
	void sendSMS();
}

路由器产品接口

public interface IphoneProduct{
	void start();
	void shutdown();
	void sendSMS();
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值