设计模式:简单工程模式
定义以及结构
定义
简单工程模式属于创建型模式,又称为静态工程方法模式,在简单工程模式中,可以根据参数的不同,来返回不同类的实例,静态工厂模式专门定义一个类来负责创建子类的实例,被创建的子类通常有一个共同的父类
结构图
一般分为三类:
- Factory:工厂类,简单工程模式的核心,它负责实现创建所有实例的内部逻辑。工厂类的创建产品类的方法可以被外界直接调用,用来创建所需的产品对象。
- IProduce:抽象产品类,简单工程模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口
- Product:具体产品类,是简单工程模式的目标类。
实现
假设有一个笔类生产商,想生产不同的笔种,所以就需要用一个单独的类来专门生产笔。
产品抽象类
public abstract class Pen {
// 产品的抽象方法,由具体的产品类去实现
public abstract void start();
}
具体实现类
public class Pencil extends Pen {
@Override
public void start(){
System.out.println("pencil start!");
}
}
public class Ballpen extends Pen {
@Override
public void start(){
System.out.println("Ballpen start!");
}
}
工厂类
public class PenFactory {
public static Pen creatPen(String type){
Pen pen=null;
switch(type){
case "pencil":
pen=new Pencil();
break;
case "ballpen":
pen= new Ballpen();
break;
default:
break;
}
return pen;
}
}
测试
public class Test {
public static void main(String[] args) {
Pen pen=PenFactory.creatPen("pencil");
pen.start();
}
}
优缺点
优点
- 工厂类含有必要的逻辑判断,可以决定在上面时候创建哪一个产品类实例,客户端可以免除之间创建产品对象的责任,而仅仅消费了产品,实现了对责任的分割。
- 客户端无序知道创建具体产品类的类名,只需知道对应的参数,方便创建
- 通过引入配置文件,可以在不改变客户端代码的情况下,更换和增加新的具体产品类,在一定程度上提高了系统的灵活性。
缺点
- 由于工厂类集中就所有产品的创建逻辑,一旦出现问题,整个系统都会受影响
- 系统扩展困难,一旦添加新产品就必须要修改工厂逻辑,破坏了开闭原则,在产品较多的情况下,容易造成逻辑复杂不利于扩展以及维护
- 简单工厂模式由于使用了静态工程方法,造成工程角色无法形成基于继承的等级结构
适用场景
- 工厂类负责创建的对象比较少,由于创建的对象较少,不会造成业务逻辑过于复杂
- 客户端只需要知道创建的参数,不需要关心如何实现
最后
- 如果觉得看完有收获,希望能给我点个赞,这将会是我更新的最大动力,感谢各位的支持
- 欢迎各位关注我的公众号【java冢狐】,专注于java和计算机基础知识,保证让你看完有所收获,不信你打我
- 如果看完有不同的意见或者建议,欢迎多多评论一起交流。感谢各位的支持以及厚爱。