创建类模式大PK

  • 创建类模式包括工厂方法模式建造者模式抽象工厂模式单例模式原型模式,他们能够提供对象的创建和管理职责。其中单例模式和原型模式模式非常容易理解,单例模式是要保持在内存中只有一个对象,原型模式是通过复制的方式产生一个新的对象。而工厂方法模式、抽象工厂模式和建造者模式,这三者之间有较大的相似性。
工厂方法模式VS建造者模式
  • 工厂方法模式注重的是整体对象的创建方法,而建造者模式注重的是部件构建的过程,旨在通过一步一步地精确构造创建出一个复杂的对象。就拿造车来说吧,工厂方法模式,直接生产出来的就是奔驰、宝马和大众;而建造者模式则不同了,则需要创建车胎、引擎、车门、座椅、车灯等等,然后组装成一辆奔驰或者宝马车。如下我们分别介绍两种模式的造车过程。
  • 工厂方法模式造车

首先工厂方法模式的类图如下,其中我们将车辆分为三种奔驰、宝马、大众,定义一个接口,在定义三种车型的创建实现,通过汽车制造工厂生产汽车。通过类图代码略。

设计模式之创建类模式大PK

 

  • 建造者模式造车

建造者模式设计一个车需要先把车进行拆分,分为引擎、车轮和车体三部分,然后由建造者进行建造,并通过设计图纸建造车辆,注重零件的配合、组装和封装从一个细微构件角度看待一个对象,建造者模式的类图如下。

设计模式之创建类模式大PK

 

这个看起来还有点复杂呢,我们还是看看通用类图的源码吧,一点一点的分析一下,首先我们还是先看看这个奔驰和宝马汽车吧,还是把大众汽车给忘记了!源码还是挺简单的,就是一些get和set方法。

public interface ICar {
    public String getWheel();
    public String getEngine();
    public String getCarbody();
}

public class Benz implements ICar{
    private Blueprint bp;
    public Benz(Blueprint bp){
        this.bp = bp;
    }
    @Override
    public String getWheel() {
        // TODO Auto-generated method stub
        return this.bp.getWheel();
    }

    @Override
    public String getEngine() {
        // TODO Auto-generated method stub
        return this.bp.getEngine();
    }

    @Override
    public String getCarbody() {
        // TODO Auto-generated method stub
        return this.bp.getBody();
    }
}

public class BMW implements ICar{
    private Blueprint bp;
    public BMW(Blueprint bp){
        this.bp = bp;
    }
    public String getBody() {
        return this.bp.getBody();
    }
    public String getWheel() {
        // TODO Auto-generated method stub
        return this.bp.getWheel();
    }
    @Override
    public String getEngine() {
        // TODO Auto-generated method stub
        return this.bp.getEngine();
    }
    @Override
    public String getCarbody() {
        // TODO Auto-generated method stub
        return this.bp.getBody();
    }
}
View Code

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-10-12
  • 2022-01-16
  • 2022-01-14
  • 2021-04-12
  • 2021-04-23
猜你喜欢
  • 2021-07-11
  • 2021-06-21
  • 2021-10-12
  • 2021-06-05
  • 2021-08-22
  • 2022-01-10
相关资源
相似解决方案