当前位置: 首页 > news >正文

建做网站百度网站ip地址

建做网站,百度网站ip地址,新浪博客发布到wordpress,网站动图怎么做的文章目录 设计模式概述1、建造者模式2、建造者模式使用场景3、优点4、缺点5、主要角色6、代码示例:1)实现要求2)UML图3)实现步骤:1)创建一个表示食物条目和食物包装的接口2)创建实现Packing接口的实体类3&a…

文章目录

  • 设计模式概述
  • 1、建造者模式
  • 2、建造者模式使用场景
  • 3、优点
  • 4、缺点
  • 5、主要角色
  • 6、代码示例:
    • 1)实现要求
    • 2)UML图
    • 3)实现步骤:
      • 1)创建一个表示食物条目和食物包装的接口
      • 2)创建实现Packing接口的实体类
      • 3)创建实现 Item 接口的抽象类,该类提供了默认的功能
      • 4)创建扩展了 Burger 和 ColdDrink 的实体类
      • 5)创建一个Meal类,带有上面定义的Item对象
      • 6)创建一个MealBuilder类,实际的builder类负责创建Meal对象
      • 7)BuilderPatternDemo使用MealBuilder来演示建造者模式(Builder Pattern)
      • 8)执行程序,输出结果:
  • 7、总结

设计模式概述

创建型模式:工厂方法、抽象方法、建造者、原型、单例。
结构型模式有:适配器、桥接、组合、装饰器、外观、享元、代理。
行为型模式有:责任链、命令、解释器、迭代器、中介、备忘录、观察者、状态、策略、模板方法、访问者。
常用设计模式:
单例模式、工厂模式、代理模式、策略模式&模板模式、门面模式、责任链模式、装饰器模式、组合模式、builder模式。

1、建造者模式

  • 建造者模式是一种创建型设计模式,它允许你创建复杂对象的步骤与表示方式相分离,从而可以创建具有不同表示形式的对象。
  • 旨在通过逐步构造复杂对象的各个部分来简化对象的创建
  • 它与工厂模式的不同之处在于,建造者模式更注重将一个复杂对象的构造过程进行拆解,并且可以根据需求一步步定制地构建

2、建造者模式使用场景

  • 构造函数包含多个参数或嵌套对象且顺序不固定的对象创建:例如,像 Pizza 这样可以自定义不同配料的场景,建造者模式可以让我们有选择性地添加不同的部分,而不需要冗长的构造函数。
  • 需要可读性强的对象创建代码:对于那些复杂对象,建造者模式可以让代码更加清晰。
  • 对象的不可变性(Immutable Object):通过建造者模式,我们可以有效创建不可变对象(对象一旦创建就不可更改),这有助于避免线程安全问题。

3、优点

  • 灵活性高:可以根据不同需求构建不同的对象版本。
  • 代码清晰:由于建造者模式将对象的创建与表示分开,构建过程变得更加可读和维护。
  • 避免了构造函数过载:当构造函数包含过多参数时,使用建造者模式可以避免参数爆炸问题。

4、缺点

  • 可能增加代码复杂度:在某些场景下,如果对象并不复杂,使用建造者模式可能导致不必要的代码冗余。
  • 需要额外的Builder类:每个复杂对象都需要有一个对应的Builder类,可能会增加代码量。

5、主要角色

建造者模式包含以下几个主要角色:

  • 产品(Product):要构建的复杂对象。产品类通常包含多个部分或属性。
  • 抽象建造者(Builder):定义了构建产品的抽象接口,包括构建产品的各个部分的方法。
  • 具体建造者(Concrete Builder):实现抽象建造者接口,具体确定如何构建产品的各个部分,并负责返回最终构建的产品。
  • 指导者(Director):负责调用建造者的方法来构建产品,指导者并不了解具体的构建过程,只关心产品的构建顺序和方式。

6、代码示例:

1)实现要求

  • 我们假设一个快餐店的商业案例,其中,一个典型的套餐可以是一个汉堡(Burger)和一杯冷饮(Cold drink)。汉堡(Burger)可以是素食汉堡(Veg Burger)或鸡肉汉堡(Chicken Burger),它们是包在纸盒中。冷饮(Cold drink)可以是可口可乐(coke)或百事可乐(pepsi),它们是装在瓶子中。

  • 我们将创建一个表示食物条目(比如汉堡和冷饮)的 Item 接口和实现 Item 接口的实体类,以及一个表示食物包装的 Packing 接口和实现 Packing 接口的实体类,汉堡是包在纸盒中,冷饮是装在瓶子中。

  • 然后我们创建一个 Meal 类,带有 Item 的 ArrayList 和一个通过结合 Item 来创建不同类型的 Meal 对象的 MealBuilder。BuilderPatternDemo 类使用 MealBuilder 来创建一个 Meal。

2)UML图

在这里插入图片描述

3)实现步骤:

1)创建一个表示食物条目和食物包装的接口


// Item.java
public interface Item {public String name();public Packing packing();public float price();    
}//  Packing.java
public interface Packing {public String pack();
}

2)创建实现Packing接口的实体类

//  袋装   Wrapper.java
public class Wrapper implements Packing {@Overridepublic String pack() {return "Wrapper";}
}// 瓶装  Bottle.java
public class Bottle implements Packing {@Overridepublic String pack() {return "Bottle";}
}

3)创建实现 Item 接口的抽象类,该类提供了默认的功能

public abstract class Burger implements Item {@Overridepublic Packing packing() {return new Wrapper();}@Overridepublic abstract float price();
}
public abstract class ColdDrink implements Item {@Overridepublic Packing packing() {return new Bottle();}@Overridepublic abstract float price();
}

4)创建扩展了 Burger 和 ColdDrink 的实体类

public class VegBurger extends Burger {@Overridepublic float price() {return 25.0f;}@Overridepublic String name() {return "Veg Burger";}
}
public class ChickenBurger extends Burger {@Overridepublic float price() {return 50.5f;}@Overridepublic String name() {return "Chicken Burger";}
}
// Coke 类继承 ColdDrink
public class Coke extends ColdDrink {@Overridepublic float price() {return 30.0f;}@Overridepublic String name() {return "Coke";}
}

// Pepsi 类继承 ColdDrink
public class Pepsi extends ColdDrink {@Overridepublic float price() {return 35.0f;}@Overridepublic String name() {return "Pepsi";}
}

5)创建一个Meal类,带有上面定义的Item对象

import java.util.ArrayList;
import java.util.List;public class Meal {private List<Item> items = new ArrayList<Item>();    public void addItem(Item item){items.add(item);}public float getCost(){float cost = 0.0f;for (Item item : items) {cost += item.price();}        return cost;}public void showItems(){for (Item item : items) {System.out.print("Item : "+item.name());System.out.print(", Packing : "+item.packing().pack());System.out.println(", Price : "+item.price());}        }    
}

6)创建一个MealBuilder类,实际的builder类负责创建Meal对象

public class MealBuilder {public Meal prepareVegMeal (){Meal meal = new Meal();meal.addItem(new VegBurger());meal.addItem(new Coke());return meal;}   public Meal prepareNonVegMeal (){Meal meal = new Meal();meal.addItem(new ChickenBurger());meal.addItem(new Pepsi());return meal;}
}

7)BuilderPatternDemo使用MealBuilder来演示建造者模式(Builder Pattern)

public class BuilderPatternDemo {public static void main(String[] args) {MealBuilder mealBuilder = new MealBuilder();Meal vegMeal = mealBuilder.prepareVegMeal();System.out.println("Veg Meal");vegMeal.showItems();System.out.println("Total Cost: " +vegMeal.getCost());Meal nonVegMeal = mealBuilder.prepareNonVegMeal();System.out.println("\n\nNon-Veg Meal");nonVegMeal.showItems();System.out.println("Total Cost: " +nonVegMeal.getCost());}
}

8)执行程序,输出结果:

Veg Meal
Item : Veg Burger, Packing : Wrapper, Price : 25.0
Item : Coke, Packing : Bottle, Price : 30.0
Total Cost: 55.0Non-Veg Meal
Item : Chicken Burger, Packing : Wrapper, Price : 50.5
Item : Pepsi, Packing : Bottle, Price : 35.0
Total Cost: 85.5

7、总结

建造者模式提供了一种优雅的方式来创建复杂的对象,特别适合在需要精细控制对象构建过程的场景下使用。通过分离构建过程和对象本身,它可以使代码更加简洁、可读,且易于维护。尽管它有时会增加代码的复杂度,但在应对复杂对象创建时,这种模式非常值得推荐

http://www.hkea.cn/news/760432/

相关文章:

  • 苹果网站做的好的点电脑培训网上免费课程
  • 做网站开源互联网优化是什么意思
  • 模仿做网站b站上海热点新闻
  • phpcmsv9网站地图地推的60种方法
  • 湖南手机版建站系统哪个好百度网盘app怎么打开链接
  • asp网站开发的实训报告电商营销推广有哪些?
  • 交互设计流程外贸网站优化公司
  • 网络营销网站策划个人网站seo入门
  • 云南省网站备案要求全渠道营销的概念
  • 装修网站合作平台有哪些torrentkitty磁力猫
  • 大理网站开发长春seo结算
  • 西双版纳疫情最新情况seo营销的概念
  • 网站推广seo蜘蛛屯优化排名模板建网站价格
  • 怎样建设公司网站小程序b2b网站大全免费
  • 百度抓取不到网站百度识图搜索图片来源
  • 企业网站栏目规划的重要性网络营销的概述
  • 公司网站建设找谁做免费发布推广信息网站
  • 虚拟币网站开发seo百度关键字优化
  • 网站建设都 包括哪些淄博网站制作
  • 自己做装修网站南宁百度推广seo
  • 品牌建设浅谈seo网络营销外包
  • 昆山网站建设兼职千锋教育的官网
  • cm域名做网站盘古百晋广告营销是干嘛
  • 网站栏目策划企业网络营销方案
  • 网站自动采集指标sem广告投放是做什么的
  • 想做一个个人网站怎么做培训学校
  • 网站开发ipv6升级如何创建自己的小程序
  • 做网站需要备案吗外贸网站推广与优化
  • 独立网站建设流程b站视频推广网站动漫
  • 泰安诚信的网站建设b站推广入口2023年