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

湖南智能网站建设费用ipad 建网站

湖南智能网站建设费用,ipad 建网站,关于加强机关网站建设,网站规划与建设是什么样的建造者模式(Builder Pattern),又叫生成器模式,是一种对象构建模式 它可以将复杂对象的建造过程抽象出来,使这个抽象过程的不同实现方法可以构造出不同表现的对象。建造者模式是一步一步创建一个复杂的对象,…

建造者模式(Builder Pattern),又叫生成器模式,是一种对象构建模式 它可以将复杂对象的建造过程抽象出来,使这个抽象过程的不同实现方法可以构造出不同表现的对象。建造者模式是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可 以构建它们,用户不需要知道内部的具体构建细节。

简单来说,建造者模式允许你按步骤创建复杂的对象,同时将对象的构建与其表示分离。

主要解决的问题是当创建一个复杂对象时,如果直接在代码中进行对象的创建和初始化,会导致代码变得复杂而难以维护。

而建造者模式通过将对象的构建过程委派给不同的建造者,使得代码更加清晰、可读,并且可以灵活地构建不同的对象表示形式。

当我们需要创建一个对象,但该对象具有复杂的构建过程,并且构建过程可以有不同的表示形式时,可以考虑使用建造者模式。

建造者模式包含4个元素:

  • 抽象建造者(Builder):一个抽象接口,规范了产品对象的各个组成成分的建造。
  • 具体建造者(ConcreteBuilder):与应用程序紧密相关的一些类,它们在应用程序调用下创建产品的实例。
  • 导演者(Director):调用具体建造者角色来创建产品对象。
  • 产品(Product):一般是一个较为复杂的对象。

优点包括:

  1. 将对象的构建过程封装在一个建造者类中,使得客户端代码与具体构建过程解耦,提高了代码的可维护性和可读性。
  2. 可以灵活地构建不同表示形式的对象,通过调整建造者的步骤和配置,可以得到不同的对象。
  3. 可以更好地控制对象的构建过程,避免了在代码中直接创建和初始化对象的复杂性。

缺点包括:

  1. 建造者模式增加了代码的复杂性,因为需要定义多个类来实现构建者和产品对象,可能会增加项目的工程复杂性。
  2. 如果产品的属性发生变化,需要修改构建者类和产品类,可能会引起一定的维护成本。

注意事项:与工厂模式的区别是:建造者模式更加关注与零件装配的顺序。

案例

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

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

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

建造者模式的 UML 图

步骤 1

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

public interface Item {public String name();public Packing packing();public float price();    
}

public interface Packing {public String pack();
}

步骤 2

创建实现 Packing 接口的实体类。

public class Wrapper implements Packing {@Overridepublic String pack() {return "Wrapper";}
}
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";}
}
public class Coke extends ColdDrink {@Overridepublic float price() {return 30.0f;}@Overridepublic String name() {return "Coke";}
}
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

BuiderPatternDemo 使用 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

总结

建造者模式是一种创建型设计模式,用于将复杂对象的构建过程与其表示分离。它通过将复杂对象的构建过程分解为多个简单的步骤来实现。在Java中,我们可以使用建造者模式来创建复杂对象,并且可以根据需要使用不同的建造者来创建不同的表示。建造者模式的优点包括可重用性和易于维护和扩展,但它的缺点是代码结构较为复杂。建造者模式适用于需要创建多个相似对象,或者需要在不同的上下文中创建不同的对象表示的情况。如果需要创建的对象较为简单,可能会使用建造者模式变得过于繁琐。

总之,建造者模式是一种非常有用的设计模式,可以帮助我们更好地管理对象的构建过程,并且使得代码更加易于维护和扩展。如果你需要创建一个复杂的对象,或者需要在不同的上下文中创建不同的对象表示,建议你考虑使用建造者模式来实现。

http://www.yayakq.cn/news/252854/

相关文章:

  • 网站有冒号怎么打开竞价网站做招商加盟可以不备案吗
  • 网站备案难吗社交网站开发客户
  • 上海英文网站建设c2c模式的典型网站
  • wordpress建站最低配置重庆建设工程信息网官网入口30系统登入
  • 网站建设在线推广企信网查询官网
  • 网站总浏览量深圳seo网络推广营销
  • 音频文件放到网站空间里生成链接怎么做做网站维护有没有前途
  • 家具能在什么网站上做怎么开亚马逊跨境电商店铺
  • 免费网站空间 - 百度佛山网站建设专业公司
  • lol做直播网站武穴建设网站
  • 网站地址推荐深圳工程建设服务网
  • 网上写作文的网站美食网页制作代码
  • html5网站制作教程wordpress 手机顶部悬浮
  • WordPress多站点开启多语言网站建站服务公司电话
  • 网站优化什么php网站开发软件是什么
  • 专业做化妆品外包材的招聘网站seo网站推广平台
  • 郑州建网站msgg企业门户网站制作价格怎么算
  • 网站建设方案的企业中国建设教育网证件查询
  • 酒店网站建设案例网页源代码查看密码
  • 科技公司网站首页网站建设技术实现
  • 营销型网站的现状关键词seo排名优化
  • 做摄影网站的目的是什么网站空间续费后网页不能打开
  • 河南省建设厅网站取消劳务资质365网站建设
  • 网站为什么要备案比特币支付网站建设
  • 网站的开发流程分为网络营销推广公司有哪些
  • 网站主页制作网页版梦幻西游是网易的吗
  • 有名的wordpress网站企业小程序开发费用
  • 山西省建设厅官方网站南宁市做网站
  • jsp网站服务建设是什么最大的外包公司
  • wordpress wp-content权限西安百度seo代理