设计模式 --- 工厂模式
工厂模式:
对实现同一接口的不同类,用一个工厂类,根据传入的参数/调用方法/静态方法来创造不同的产品,类的对象
普通工厂模式:
public interface Person{
public void getPerson();
}
public class Student implements Person{
@Override
public void getPerson() {
// TODO Auto-generated method stub
}
}
public class Teacher implements Person{
@Override
public void getPerson() {
// TODO Auto-generated method stub
}
}
public class PersonFactory{
public Person newPerson(String person){
if(person.equals("Student")){
return new Student();
}else if(person.equals("Teacher")){
return new Teacher();
}else{
System.out.println("input message is error!");
throw new RuntimeException("输入类型错误");
}
}
}
缺点: 将来对添加新的类时,需要直接改变工作方法,不好;参数也有数错误的情况
多个工厂方法
//多个工厂方法模式
public class PersonFactory1{
public Person newStudent(){
return new Student();
}
public Person newTeacher(){
return new Teacher();
}
}需要创建对象,并且版本升级添加新类时,也需要添家工厂类的方法,也不是很方便
多个静态工厂方法:
//静态方法多个工厂方法模式
public class PersonFactory2{
public static Person newStudent(){
return new Student();
}
public static Person newTeacher(){
return new Teacher();
}
}
抽象方法工厂者模式:
//抽象工厂方法模式
public interface Factory1{
public Person newPerson();
}
public class StudentFactory implements Factory1{
@Override
public Person newPerson() {
// TODO Auto-generated method stub
return new Student();
}
}
public class TeacherFactory implements Factory1{
@Override
public Person newPerson() {
// TODO Auto-generated method stub
return new Teacher();
}
}
以上步骤一步一步升级为现在的最优模式,将来有新的类添加时,只需要继承同一的工厂接口即可,不需要对源代码进行修改
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】