设计模式学习(四)-------Factory

本文探讨了工厂模式的应用场景,包括简单工厂和工厂方法模式。通过对比直接在类中创建对象的方式,说明了工厂模式如何降低代码间的耦合度,并遵循依赖倒置原则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我学习了工厂模式,下面想想我学了点什么

首先,为什么要有factory,一般我们在程序中怎样得到对象的实例,new一个,想像一下,你在这个类中new一个Student

在另一个类中又new一个Student,一旦你要修改Student的实现到一个子类(可能的话Student s = new HighSchoolStudent()),那不是要修改每个类的代码,那不是很烦吗,可见把对象的创建(复杂的对象)直接暴露在具体的行为中,或是写的到处都是,明显不是十分的合适,这里我们就可以使用工厂模式的第一种 :简单工厂

什么是简单工厂,一般来说就是

public class StudentFactory{

public static  Student getStudent(){

return new Student();

}

}

简单的实现,写个static方法(一般都是,当然也可以不写,那就要创建工厂对象,来调用方法),直接StudentFactory.getStudent()得到Student对象,这里明显看出,一旦需要比如HighSchoolStudent()的对象就修改

方法就行了,十分的方便(当然,一般都不会出现这种情况,那为什么还有写工厂方法呢???)

一般来说,直接在类中创建对象,比如

class School{

Student s;

...

public School(){

s = new Student();

}

...

}

这样的行为就是直接将School类依赖于Student,Student的修改将直接影响到School

 

这里再来说个OO原则:

要依赖于抽象,而不要依赖于具体

这看上去和依赖接口,不依赖实现很像,但是这里强调的是依赖于抽象

 

比如就可以把Student设计成抽象类,而HighSchoolStudent .. 等为子类

在School中只要包含Student这个超类就行了,而不必管他是高中生,还是初中生,School doesn't care about what this student extrualy is , it just use the

normal beheaiver in the Student which all the subclass shared.

this is what we called Dependceny Inversion

 

now we can talk about the second way in the factory model which is Factory Method

 

工厂方法模式,将具体产品的创建交给子类来执行,

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值