首页 > 其他分享 >设计模式——建造者模式

设计模式——建造者模式

时间:2023-09-07 10:37:04浏览次数:35  
标签:sequence void 建造 模式 public protected ArrayList 设计模式 abstract

建造者模式简介

1.建造者模式适用于一个具有较多的零件的复杂产品的创建过程,由于需求的变化,组成这个复杂产品的各个零件经常猛烈变化,但是他们的组合方式却相对稳定。他可以使你分步骤创建复杂的对象。

建造者模式解决的问题

一般当我们遇到一个非常复杂的对象的时候,这个对象里面有非常多的属性。或者有非常多的繁杂的方法的时候,我们就可以使用建造者模式来对这个对象进行指定类型的初始化。比如当你建造房子的时候,房子里面会有各种各样的内容,比如墙壁,灯,电视,电脑,游泳池,冰箱,地板,空调等等内容,而每个房子建造之后里面的内容也不是全部都有的,所以你需要对每一套房子进行指定内容的初始化。

实例

比如当我们遇到这样一种场景,马戏团中,每个动物在不同的表演中,要进行不同的动作。 首先有一个动物的抽象类,每个动物都实现这个抽象类

public abstract class AnymalModel {
    //这个参数是各个基本方法执行的顺序
    private ArrayList<String> sequence = new ArrayList<>();
 
    //跑了
    protected abstract void start();
 
    //停止
    protected abstract void stop();
 
    //叫
    protected abstract void alarm();
 
    //跳
    protected abstract void engineBoom();
 
    //开始表演
    final public void run() {
        //循环一边,谁在前,就先执行谁
        for (String actionName : this.sequence) {
            if (actionName.equalsIgnoreCase("start")) {
                this.start(); 
            } else if (actionName.equalsIgnoreCase("stop")) {
                this.stop(); 
            } else if (actionName.equalsIgnoreCase("alarm")) {
                this.alarm(); 
            } else if (actionName.equalsIgnoreCase("engine boom")) {
                this.engineBoom();
            }
        }
    }
 
    //把传递过来的值传递到类内
    final public void setSequence(ArrayList<String> sequence) {
        this.sequence = sequence;
    }
}

其次每一个动物对这些抽象类进行实现,每一只动物都有不同的实现。

//小鸟
public class BridMode extends AnmicModel{
	 //跑了
    protected abstract void start(){
	System.out.println("小鸟开始跑");
	}
 
    //停止
    protected abstract void stop(){
	System.out.println("小鸟停下来");
	}
 
 
    //叫
    protected abstract void alarm(){
	System.out.println("小鸟开始叫");
	}
 
 
    //跳
    protected abstract void engineBoom(){
	System.out.println("小鸟开始跳");
	}
}
//7老虎
public class TirgeMode extends AnmicModel{
	 //跑了
    protected abstract void start(){
	System.out.println("老虎开始跑");
	}
 
    //停止
    protected abstract void stop(){
	System.out.println("老虎停下来");
	}
 
 
    //叫
    protected abstract void alarm(){
	System.out.println("老虎开始叫");
	}
 
 
    //跳
    protected abstract void engineBoom(){
	System.out.println("老虎开始跳");
	}
}

此时我们设置一个驯兽员,训练动物在每次表演的不同表演方法

//驯兽员
public abstract PersonBuilder{
	//设置动物的一个模型,每一个动物都按照这个方法进行表演
	private abstract void setSequence(ArrayList<String> sequence);
	private abstract AnymicModel GetAnymicModel();
}
//小鸟的驯兽员
public void BirdBuilder extends PersonBuilder{
	Private BridMode birdMode = new BridMode();
	public AnymicModel GetAnymicModel(){
		return this.bireMode;
	}
	public setSequence(ArrayList<String> sequence){
		this.bireMode.setSequence(sequence);
	}
}
//老虎的驯兽员
public void TigerBuilder extends PersonBuilder{
	Private TigerMode tigerMode = new TigerMode();
	public AnymicModel GetAnymicModel(){
		return this.tigerMode;
	}
	public setSequence(ArrayList<String> sequence){
		this.tigerMode.setSequence(sequence);
	}
}
class Client {
    public static void main(String[] args) {
        ArrayList<String> sequence = new ArrayList<String>();
        //要求小鸟先叫
        sequence.add("engine boom");
        //开始表演
        sequence.add("start");
        //停下来
        sequence.add("stop");
        BirdBuilder birdBuilder = new BirdBuilder ();
        birdBuilder.setSequence(sequence);
        BirdModel birdModel = birdBuilder.getBirdModel();
        birdModel.run();
    }
}

这样在不同的表演场景中,我们都可以使用建造类,来对不同的场景进行封装和设置;

标签:sequence,void,建造,模式,public,protected,ArrayList,设计模式,abstract
From: https://blog.51cto.com/u_15585624/7394654

相关文章

  • 网红淘客卷轴模式系统开发介绍和部分源码分享
    网红淘客也是一种卷轴模式系统。什么是卷轴模式呢?新用户注册,先送你一部分积分,该积分用于兑换一个初始任务,俗称卷轴!卷轴模式的赚钱的原理是,你用积分兑换初级任务包,完成卷轴任务之后,你可以获得更多的积分,然后复投,达到一定数量后可以兑换更高级的任务包,任务包越高级每次获得的积分也就......
  • Scrum敏捷开发模式的优势、实践经验及适用企业分享
    Scrum敏捷模式是一种灵活、适应性强的开发方法,其核心理念是以短周期、高频率的方式进行项目开发,确保团队能够快速响应变化。Scrum包含三个角色:产品负责人(ProductOwner)、ScrumMaster和开发团队(Team),以及四个仪式:迭代(Sprint)、迭代计划会议、每日站会和迭代评审会议。Scrum敏捷模式的......
  • 陪诊小程序系统|陪诊小程序医疗协调新模式
    在快节奏的现代生活中,陪诊已经成为了许多人的刚需。然而,面对繁忙的工作和各种琐事,很多人往往无法亲自陪伴亲友就医、检查。而如今,随着科技的发展,陪诊小程序应运而生,它既提供了便利,又保证了家人和朋友的陪同。本文将介绍陪诊小程序的独特优势、广泛应用范围以及全面功能,让您深入了解......
  • Java设计模式-懒汉模式
    懒汉模式(LazyInitialization)是一种创建型设计模式,它用于在需要时才创建对象。这种模式的主要优点是节省资源,因为它只在真正需要对象时才创建实例。在Java中,懒汉模式可以通过使用静态内部类实现。以下是一个简单的Java懒汉模式示例:publicclassLazySingleton{//创建一个静......
  • 设计模式-建造者模式
    建造者模式是一种创建型的设计模式,将一个对象的创建过程拆分成一个个小的部分,每次决定其中的一个细节,构建出一个复杂对象对象的创建过程被拉长分散,可能会经历一系列的复杂决策,最终才会形成我们需要的对象对象拥有多个参数,或者拥有包含多个参数的构造函数,通过建造......
  • 结构型设计模式-组合(对象树) Composite
    简介组合模式又叫对象树,将对象按照树形结构串起来,呈现出局部和整体相同的特性。树中每个节点都由两部分组成,首先节点有自己的业务数据,其次节点内可以含有子节点集合。比如盒子中可以放物品,也可以放其他小盒子,小盒子里又可以放物品和其他更小的盒子。当计算盒子的物品价格时,只......
  • 结构型设计模式-桥接(模块化) Bridge
    简介桥接模式可将一系列紧密相关的、水平等级的类,转变为组合关系,形成垂直等级关系。如抽象类Color、Shape,分别有RedColor、BlueColor、CircleShape、SquareShape的实现类,那么想创建红色方形,则可以将Shape类中持有Color引用,动态向Shape中注入Color实现即可。否则分别......
  • 结构型设计模式-适配器 Adapter
    结构型设计模式-适配器Adapterdate:April13,2021slug:design-pattern-adapterstatus:Publishedtags:设计模式type:Page简介适配器模式是一种结构型设计模式,它能使接口不兼容的对象能够相互合作角色Client接口/Target目标接口用户使用的接口Adaptee被......
  • 创建型设计模式-原型 Prototype
    简介原型模式支持按照一个对象为模板,创建出另一个一模一样的对象。简单说就是把A对象的属性,都赋值到B上,注意必须是深拷贝,即clone后的AB关联的对象是不同的对象。角色抽象原型类定义clone方法具体实现类实现clone方法类图代码classPrototype{p......
  • 创建型设计模式-单例 Singleton
    简介全局共用一个对象,好处是对象只实例化一次,减少资源占用角色单例类返回本类的唯一一个实例代码classSingleton{privatestatic$instances=[];protectedfunction__construct(){}protectedfunction__clone(){}publicfunction__wa......