大话设计模式——简单工程模式

设计模式:简单工程模式

定义以及结构

定义

​ 简单工程模式属于创建型模式,又称为静态工程方法模式,在简单工程模式中,可以根据参数的不同,来返回不同类的实例,静态工厂模式专门定义一个类来负责创建子类的实例,被创建的子类通常有一个共同的父类

结构图

一般分为三类:

  • 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和计算机基础知识,保证让你看完有所收获,不信你打我
  • 如果看完有不同的意见或者建议,欢迎多多评论一起交流。感谢各位的支持以及厚爱。

猜你喜欢

转载自blog.csdn.net/issunmingzhi/article/details/107014060