首页 > 其他分享 >软件设计模式————(建造者模式)

软件设计模式————(建造者模式)

时间:2024-11-21 14:09:10浏览次数:1  
标签:String 软件设计 void 建造 comptureKind 模式 compture public Builder

[实验任务一]:计算机组装

使用建造者模式,完成下述任务:计算机组装工厂可以将CPU、内存、硬盘、主机等硬件设备组装在一起构成计算机,计算机的类型可以是笔记本,也可以是台式机。

实验要求:

1.画出对应的类图;

 

2.提交源代码;

Java

1.Builder

public abstract class Builder {

    Computer computer = new Computer();

    abstract public void buildZhuJi();

    abstract public void buildYinPan();

    abstract public void buildCpu();

    abstract public void buildNeiCun();

    public Compture getCompture(){

        return compture;

    }

}

 

① Compture

public class Compture {

    private String cpu;

    private String neiCun;

    private String yinPan;

    private String zhuJi;

 

 

    public String getZhuJi() {

        return zhuJi;

    }

 

    public void setZhuJi(String zhuJi) {

        this.zhuJi = zhuJi;

    }

 

    public String getYinPan() {

        return yinPan;

    }

 

    public void setYinPan(String yinPan) {

        this.yinPan = yinPan;

    }

 

    public String getNeiCun() {

        return neiCun;

    }

 

    public void setNeiCun(String neiCun) {

        this.neiCun = neiCun;

    }

 

    public String getCpu() {

        return cpu;

    }

 

    public void setCpu(String cpu) {

        this.cpu = cpu;

    }

}

 

② Factory

public class Factory {

    private Builder comptureKind;

 

    public void setCompture(Builder kind) {

        this.comptureKind = kind;

    }

    public Compture construct(){

        comptureKind.buildCpu();

        comptureKind.buildYinPan();

        comptureKind.buildZhuJi();

        comptureKind.buildNeiCun();

        return comptureKind.getCompture();

    }

}

 

③ LapBuilder

public class LapBuilder extends Builder{

    @Override

    public void buildZhuJi() {

        compture.setZhuJi("LZJ");

    }

 

    @Override

    public void buildYinPan() {

        compture.setYinPan("LYP");

    }

 

    @Override

    public void buildCpu() {

        compture.setCpu("LC");

    }

 

    @Override

    public void buildNeiCun() {

        compture.setNeiCun("LNC");

    }

}

 

④ Store

public class Store {

    public static void main(String[] args) {

        Builder lap;

        Factory factory=new Factory();

        for (int i = 0; i < 2; i++) {

            if(i==1)

                lap = new LapBuilder();

            else

                lap=new TaiShiBuilder();

            factory.setCompture(lap);

            factory.construct();

            System.out.println(lap.getCompture().getCpu());

            System.out.println(lap.getCompture().getNeiCun());

            System.out.println(lap.getCompture().getYinPan());

            System.out.println(lap.getCompture().getZhuJi());

        }

 

    }

}

 

⑤ TaiShiBuilder

public class TaiShiBuilder extends Builder{

 

    @Override

    public void buildZhuJi() {

        compture.setZhuJi("TZJ");

    }

 

    @Override

    public void buildYinPan() {

        compture.setYinPan("TYP");

    }

 

    @Override

    public void buildCpu() {

        compture.setCpu("TC");

    }

 

    @Override

    public void buildNeiCun() {

        compture.setNeiCun("TNC");

    }

}

 

(1) C++:

// ShiYan_5.cpp : 定义控制台应用程序的入口点。

//

 

#include "stdafx.h"

using namespace std;

class Compture {

private:

string cpu;

string neiCun;

string yinPan;

string zhuJi;

 

 

public:

string getZhuJi() {

return zhuJi;

}

 

void setZhuJi(string z) {

zhuJi = z;

}

 

string getYinPan() {

return yinPan;

}

 

void setYinPan(string y) {

yinPan = y;

}

 

string getNeiCun() {

return neiCun;

}

 

void setNeiCun(string n) {

neiCun = n;

}

 

string getCpu() {

return cpu;

}

 

void setCpu(string c) {

cpu = c;

}

};

 

class Builder {

 

public:

Compture* compture = new Compture();

virtual  void buildZhuJi() = 0;

virtual  void buildYinPan() = 0;

virtual  void buildCpu() = 0;

virtual  void buildNeiCun() = 0;

public:

Compture* getCompture(){

return compture;

}

};

class Factory {

private:

Builder* comptureKind;

 

public:

void setCompture(Builder* kind) {

comptureKind = kind;

}

Compture* construct(){

comptureKind->buildCpu();

comptureKind->buildYinPan();

comptureKind->buildZhuJi();

comptureKind->buildNeiCun();

return comptureKind->getCompture();

}

};

class LapBuilder :public Builder{

 

 

public:

void buildZhuJi() {

compture->setZhuJi("LZJ");

}

 

 

void buildYinPan() {

compture->setYinPan("LYP");

}

 

 

void buildCpu() {

compture->setCpu("LC");

}

 

 

void buildNeiCun() {

compture->setNeiCun("LNC");

}

};

 

class TaiShiBuilder :public Builder{

 

 

public:

void buildZhuJi() {

compture->setZhuJi("TZJ");

}

 

 

void buildYinPan() {

compture->setYinPan("TYP");

}

 

 

void buildCpu() {

compture->setCpu("TC");

}

 

 

void buildNeiCun() {

compture->setNeiCun("TNC");

}

};

 

int main()

{

Builder* lap;

Factory* factory = new Factory();

for (int i = 0; i < 2; i++) {

if (i == 1)

lap = new LapBuilder();

else

lap = new TaiShiBuilder();

factory->setCompture(lap);

factory->construct();

cout << lap->getCompture()->getCpu()<<endl;

cout << lap->getCompture()->getNeiCun()<<endl;

cout << lap->getCompture()->getYinPan()<<endl;

cout << lap->getCompture()->getZhuJi() << endl;

}

system("pause");

return 0;

}

  

3.注意编程规范。

标签:String,软件设计,void,建造,comptureKind,模式,compture,public,Builder
From: https://www.cnblogs.com/youxiandechilun/p/18560622

相关文章

  • 软件设计模式————(原型模式)
    [实验任务一]:向量的原型用C++完成数学中向量的封装,其中,用指针和动态申请支持向量长度的改变,使用浅克隆和深克隆复制向量类,比较这两种克隆方式的异同。实验要求:1.画出对应的类图; 2.提交源代码(用C++完成);#include<iostream>usingnamespacestd;//向量类classVector{p......
  • 软件设计模式————(单例模式)
    [实验任务一]:学号的单一仿照课堂的身份证的例子,实现每个同学仅有一个学号这一问题。实验要求:1.画出对应的类图; 2.提交源代码; packagetest7;publicclassClient{publicstaticvoidmain(String[]args){StudentIDstu1,stu2;stu1=StudentID.getStudent......
  • 软件设计模式————(适配器模式)
    [实验任务一]:双向适配器实现一个双向适配器,使得猫可以学狗叫,狗可以学猫抓老鼠。实验要求:1.画出对应的类图; 2.提交源代码;packagetest8;publicclassAdapterimplementsCat,Dog{privateCatcat=newRealcat();privateDogdog=newRealdog();publicv......
  • 软件设计模式————(工厂方法模式)
    [实验任务一]:加密算法目前常用的加密算法有DES(DataEncryptionStandard)和IDEA(InternationalDataEncryptionAlgorithm)国际数据加密算法等,请用工厂方法实现加密算法系统。实验要求:1.画出对应的类图; 2.提交该系统的代码,该系统务必是一个可以能够直接使用的系统,查阅资料完......
  • Java中常用的线程安全单例模式实现
    在Java中,实现线程安全的单例模式有多种方式。以下是几种常用的线程安全单例模式实现:1.饿汉式(线程安全,类加载时初始化)特点:简单且线程安全,但如果实例过于占用资源且程序可能不使用它,会造成内存浪费。publicclassSingleton{privatestaticfinalSingletonINSTANCE......
  • HarmonyOS Next加解密算法中的参数与模式详解
    本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)中加解密算法参数与模式的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。一、加解密参数......
  • 软件开发中设计模式的恰当引入与实践
    一、什么是设计模式?1.1设计模式的定义设计模式是前人总结的、可复用的、在特定场景下解决特定问题的代码设计经验。它提供了一种通用的解决方案,用于描述软件系统中对象和类的结构及交互方式。1.2设计模式的分类根据**《设计模式:可复用面向对象软件的基础》**(GoF书籍)......
  • 模板方法模式-java实战
    经典实现模板方法模式(TemplateMethodPattern)是一种行为型设计模式,它在父类中定义了一个算法的框架,允许子类在不改变算法结构的情况下重新定义算法的某些特定步骤。实现步骤:定义抽象类:这个类定义了算法的框架,包括模板方法和一些抽象方法。实现模板方法:模板方法定义了算......
  • Debian12关闭休眠模式
    场景描述:日常服务器部署中,系统环境如果是Debian12操作系统,那么安装完操作系统后,会默认开启系统自动休眠模式,需要关闭系统的自动休眠,否则网络状态也会休眠,导致远程连接服务器的时候,没有响应!临时解决方式:如果目标服务器在机房或者在旁边,可以移动下该服务器连接的鼠标或键盘,激活......
  • 【设计模式】深入理解模板方法模式与策略模式(行为型模式)——写出更灵活的代码!
    全文目录:开篇语目录......