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

网站建设课程体会建设施工合同备案在哪个网站

网站建设课程体会,建设施工合同备案在哪个网站,南三环做网站的公司,家居网站建设定位分析论文问题陈述 我们需要为一家披萨公司构建软件#xff0c;该公司想要准备各种类型的披萨#xff0c;例如鸡肉披萨#xff0c;扁平面包#xff0c;意大利辣香肠披萨和额外的奶酪#xff0c;并在上面放些配料。 让我们尝试看看哪种设计模式适合该问题说明以及在哪种情况下。 传… 问题陈述 我们需要为一家披萨公司构建软件该公司想要准备各种类型的披萨例如鸡肉披萨扁平面包意大利辣香肠披萨和额外的奶酪并在上面放些配料。 让我们尝试看看哪种设计模式适合该问题说明以及在哪种情况下。 传统上对于披萨问题最常用的是构造器模式。 但是也有一些使用装饰器的示例两种方法都是正确的但用例有所不同。 Builder是一种对象创建模式而装饰器用于在运行时更改已构建的对象。 让我们尝试通过示例来理解这一点 生成器模式 这里的用例是按照既定规格一次性制作披萨。 让我们来看看披萨课 public class Pizza {private float totalPrice 0;private Size size;private Topping topping;private Crust crust;private Cheese cheese;public Size getSize() {return size;}public void setSize(Size size) {this.size size;}public Topping getTopping() {return topping;}public void setTopping(Topping topping) {this.topping topping;}public Crust getCrust() {return crust;}public void setCrust(Crust crust) {this.crust crust;}public Cheese getCheese() {return cheese;}public void setCheese(Cheese cheese) {this.cheese cheese;}public float getTotalPrice() {return totalPrice;}public void addToPrice(float price) {this.totalPrice totalPrice price;} } 4个枚举类 public enum Cheese {AMERICAN {public float getCost() {return 40;}}, ITALIAN {public float getCost() {return 60;}};public abstract float getCost();}public enum Crust {THIN {public float getCost(){return 70;}} , STUFFED{public float getCost(){return 90;}};public abstract float getCost(); }public enum Size {MEDIUM {public float getCost() {return 100;}}, LARGE {public float getCost() {return 160;}};public abstract float getCost(); }public enum Topping {PEPPERONI {public float getCost(){return 30;}}, CHICKEN{public float getCost(){return 35;}}, MUSHROOM{public float getCost(){return 20;}};public abstract float getCost(); } PizzaBuilder类别 public class PizzaBuilder {Pizza pizza new Pizza();public PizzaBuilder withTopping(Topping topping) {pizza.setTopping(topping);pizza.addToPrice(topping.getCost());return this;}public PizzaBuilder withSize(Size size) {pizza.setSize(size);pizza.addToPrice(size.getCost());return this;}public PizzaBuilder withCrust(Crust crust) {pizza.setCrust(crust);pizza.addToPrice(crust.getCost());return this;}public Pizza build() {return pizza;}public double calculatePrice() {return pizza.getTotalPrice();}} 测试用例 public class PizzaBuilderTest {Testpublic void shouldBuildThinCrustChickenPizza(){Pizza pizza new PizzaBuilder().withCrust(Crust.THIN).withTopping(Topping.CHICKEN).withSize(Size.LARGE).build();assertEquals(Topping.CHICKEN,pizza.getTopping());assertEquals(Size.LARGE,pizza.getSize());assertEquals(Crust.THIN,pizza.getCrust());assertEquals(265.0,pizza.getTotalPrice(),0);} } 装饰图案 装饰器模式用于动态添加或删除对象的其他功能或职责而不会影响原始对象。 用例是先准备一些基础比萨然后再添加不同的规格。 在这里我们需要一个要装饰的BasicPizza混凝土组件的接口Pizza以及一个包含Pizza已装饰接口的引用字段的类PizzaDecorator。 披萨界面 public interface Pizza {public String bakePizza();public float getCost(); } 基础比萨实施 public class BasePizza implements Pizza{public String bakePizza() {return amp;quot;Basic Pizzaamp;quot;;}public float getCost(){return 100;} } PizzaDecorator类 public class PizzaDecorator implements Pizza {Pizza pizza;public PizzaDecorator(Pizza newPizza) {this.pizza newPizza;}public String bakePizza() {return pizza.bakePizza();}Overridepublic float getCost() {return pizza.getCost();} } 2个装饰蘑菇和意大利辣香肠 public class Mushroom extends PizzaDecorator {public Mushroom(Pizza newPizza) {super(newPizza);}Overridepublic String bakePizza() {return super.bakePizza() amp;quot; with Mashroom Topingsamp;quot;;}Overridepublic float getCost() {return super.getCost()80;} }public class Pepperoni extends PizzaDecorator {public Pepperoni(Pizza newPizza) {super(newPizza);}Overridepublic String bakePizza() {return super.bakePizza() amp;quot; with Pepperoni Toppingsamp;quot;;}Overridepublic float getCost() {return super.getCost()110;} } 测试用例 public class PizzaDecoratorTest {Testpublic void shouldMakePepperoniPizza(){Pizza pizza new Pepperoni(new BasePizza());assertEquals(amp;quot;Basic Pizza with Pepperoni Toppingsamp;quot;,pizza.bakePizza());assertEquals(210.0,pizza.getCost(),0);} } 区别 创建对象时使用了诸如builder和factory以及abstract factory之类的模式。 装饰器之类的模式也称为结构设计模式用于可扩展性或为已创建的对象提供结构更改。 两种类型的模式在很大程度上都偏重于组合而不是继承因此将其作为使用builder而不是decorator的区分因素没有任何意义。 两者都在运行时给出行为而不是继承它。 因此如果要限制具有某些属性/功能的对象创建则应使用builder。 例如在创建对象之前必须设置4-5个属性否则我们将冻结对象创建直到尚未设置某些属性。 基本上使用它代替构造函数-正如Joshua Bloch在Effective Java2nd Edition中指出的那样。 构建器公开了生成的对象应具有的属性但隐藏了如何设置它们。 装饰器用于添加现有对象的新功能以创建新对象。 在添加对象的所有功能之前没有冻结对象的限制。 两者都在使用合成因此它们看上去可能相似但是在用例和意图上有很大不同。 另一种方法是使用工厂模式。 如果我们不想公开这些属性而是希望“神奇地”在内部创建某些披萨则可以基于某些属性。 我们将在以后的文章中使用Factory Pattern探索该实现。 翻译自: https://www.javacodegeeks.com/2014/08/pizza-problem-builder-vs-decorator.html
http://www.huolong8.cn/news/212158/

相关文章:

  • 公司网站建设任务书网站程序购买
  • 网站seo问题诊断工具群晖如何做网站服务器
  • 建筑材料采购网站seo服务器优化
  • 移动互联网站设计师桂林漓江风景区
  • 怎样用eclipse做网站通过apache建设网站
  • 山西网络网站建设销售公司网站模版如何去除title版权信息
  • 网站开发php岗位职责网站怎么自适应屏幕
  • 影视网站源码建设工程项目信息查询平台
  • 高端品牌网站建设策划方案网站开发的职业认知报告
  • DW怎么做招聘网站做介绍自己的短视频网站
  • 新网站怎么做网络推广如何零基础做网站
  • 免备案网站空间购买四川建设银行手机银行下载官方网站下载安装
  • 青岛建网站的公司有哪些wordpress定时发布功能
  • 做电商的几个网站吗有没有推广app的平台
  • 微信小程序 连接网站建行个人网上银行登录入口官网
  • tp做网站签到功能买一台服务器需要多少钱
  • 聚名网页版seo的主要分析工具
  • 网站建设企业建站北京网站设计首选 新鸿儒
  • 校园网站建设途径手机网页设计
  • 手机网站弹出菜单apache创建WordPress
  • 微商城网站建设策划书网站做了泛解析 为什么影响seo
  • 个人设计网站论文摘要让顾客进店的100条方法
  • 网站后台用什么程序做长沙建筑公司排名
  • 企业网站建设好的案例wordpress运营服务费用
  • 网站做任务领q币网站后台 验证码错误
  • 上海网站代优化怎样将wordpress导出
  • 网站空间使用方法跨境电商怎么样
  • 做公益网站有什么要求栖霞建设官方网站
  • 网上建设银行网站中国住房和城乡建设网网站
  • 温州市住房和城乡建设厅网站首页dz和wordpress论坛