- 重叠构造器(telescoping constructor)模式 —— 代码复杂,阅读困难
示例代码:
// Telescoping constructor pattern - does not scale well! public class NutritionFacts { private final int servingSize; // (ml) required private final int servings; // (per container) required private final int calories; // optional private final int fat; // (g) optional private final int sodium; // (mg) optional private final int carbohydrate; // (g) optional public NutritionFacts(int servingSize, int servings) { this(servingSize, servings, 0); } public NutritionFacts(int servingSize, int servings, int calories) { this(servingSize, servings, calories, 0); } public NutritionFacts(int servingSize, int servings, int calories, int fat) { this(servingSize, servings, calories, fat, 0); } public NutritionFacts(int servingSize, int servings, int calories, int fat, int sodium) { this(servingSize, servings, calories, fat, sodium, 0); } public NutritionFacts(int servingSize, int servings, int calories, int fat, int sodium, int carbohydrate) { this.servingSize = servingSize; this.servings = servings; this.calories = calories; this.fat = fat; this.sodium = sodium; this.carbohydrate = carbohydrate; } }
public class Client { public static void main(String[] args) { NutritionFacts cocaCola = new NutritionFacts(240, 8, 100, 0, 35, 27); } }
- JavaBean模式 —— 线程不安全,类可变
示例代码:
// JavaBean Pattern - allows inconsistency, mandates mutability public class NutritionFacts { // Parameters initialized to default values (if any) private int servingSize = -1; // Required; no default value private int servings = -1; private int calories = 0; private int fat = 0; private int sodium = 0; private int carbohydrate = 0; public NutritionFacts() { } // Setters public void setServingSize(int servingSize) { this.servingSize = servingSize; } public void setServings(int servings) { this.servings = servings; } public void setCalories(int calories) { this.calories = calories; } public void setFat(int fat) { this.fat = fat; } public void setSodium(int sodium) { this.sodium = sodium; } public void setCarbohydrate(int carbohydrate) { this.carbohydrate = carbohydrate; } }
public class Client { public static void main(String[] args) { NutritionFacts cocaCola = new NutritionFacts(); cocaCola.setServingSize(240); cocaCola.setServings(8); cocaCola.setCalories(100); cocaCola.setSodium(35); cocaCola.setCarbohydrate(27); } }
- 构建器模式 —— 适应多参数,安全,方便编写,可维护性高,开销大
示例代码:
public class NutritionFacts { private final int servingSize; private final int servings; private final int calories; private final int fat; private final int sodium; private final int carbohydrate; public static class Builder { // Required parameters private final int servingSize; private final int servings; // Optional parameters - initialized to default values private int calories = 0; private int fat = 0; private int carbohydrate = 0; private int sodium = 0; public Builder(int servingSize,int servings) { this.servingSize = servingSize; this.servings = servings; } public Builder calories(int val) { calories = val; return this; } public Builder fat(int val) { fat = val; return this; } public Builder carbohydrate(int val) { carbohydrate = val; return this; } public Builder sodium(int val) { sodium = val; return this; } public NutritionFacts build() { return new NutritionFacts(this); } } private NutritionFacts(Builder builder) { servingSize = builder.servingSize; servings = builder.servings; calories = builder.calories; fat = builder.fat; sodium = builder.sodium; carbohydrate = builder.carbohydrate; //对象域抛出异常 if(this.fat>this.sodium){ throw new IllegalArgumentException("The fat must be little than sodium!!"); } } }
public class Client { public static void main(String[] args) { NutritionFacts cocaCola = new NutritionFacts.Builder(240, 8) .calories(100).sodium(35).carbohydrate(27).build(); } }
相关推荐
Eijiro V86 JE~EJ.zip.001Eijiro V86 JE~EJ.zip.001Eijiro V86 JE~EJ.zip.001Eijiro V86 JE~EJ.zip.001Eijiro V86 JE~EJ.zip.001
Eijiro V86 JE~EJ.zip.005Eijiro V86 JE~EJ.zip.005Eijiro V86 JE~EJ.zip.005Eijiro V86 JE~EJ.zip.005
Eijiro V86 JE~EJ.zip.002Eijiro V86 JE~EJ.zip.002Eijiro V86 JE~EJ.zip.002
TheThridJE~EJ.zipTheThridJE~EJ.zipTheThridJE~EJ.zipTheThridJE~EJ.zipTheThridJE~EJ.zipTheThridJE~EJ.zipTheThridJE~EJ.zipTheThridJE~EJ.zipTheThridJE~EJ.zipTheThridJE~EJ.zipTheThridJE~EJ.zip
Eijiro V86 JE~EJ.zip.004Eijiro V86 JE~EJ.zip.004
Eijiro V86 JE~EJ.zipEijiro V86 JE~EJ.zip
Eijiro V86 JE~EJ.zip.006Eijiro V86 JE~EJ.zip.006Eijiro V86 JE~EJ.zip.006
Aspnet-ej2-aspmvc-ej1compatibility.zip,此演示旨在...,asp.net是一个开源的web框架,用于使用.net构建现代web应用和服务。asp.net创建基于html5、css和javascript的网站,这些网站简单、快速,可以扩展到数百万用户。
欧姆龙模块型温控器EJ1pdf,欧姆龙模块型温控器EJ1:控制柜内安装型温控器,灵活的模块化设计,与上位机设备的整合性大大提高。小型模块结构使温度系统的构造最适合于应用。无须编程就可与可编程控制器进行连接,减少...
通过Java开始命令行的方式修改VM参数,用户可使用JProfiler GUI的连接监听Java应用程序。该设置程序不但可以在本地计算机上运行,还可以在网络中作为某个设置程序的附加程序使用。JProfiler的帮助文件,可以帮助...
欧姆龙 倾斜温度控制用模块式温控器EJ1G操作手册pdf,不要将终端单元直接连接到HFU。终端单元必须连接在基本单元的右侧。HFU 必须连接在基本单元的左侧。EJ1 无法与CJ 系列的PLC 链接使用。对于倾斜温度控制应使用EJ1...
能在DOS下打开和关闭光驱的C程序
ABB数字量IO扩展模块,国产EJ1820支持DeivecNet通讯,完美兼容,对ABB数字IO信号进行扩展说明书
EJ511_Datasheet_rev0.97.pdf
EJ 380-1989 EJ 380-1989 EJ 380-1989
EJB超时调用,EJB超时调用,EJB超时调用,EJB超时调用
欧姆龙模块型温控器 倾斜温度控制型EJ1Gpdf,欧姆龙模块型温控器 倾斜温度控制型EJ1G:EJ1搭载实现模具面内温度均一化的“倾斜温度控制”。可进行最少2通道、最多32通道的倾斜温度控制。2通道倾斜温度控制时可进行...
Angular-ej2-angular-ui-components.zip,SyncFusion Angular UI组件库为构建现代Web应用程序提供了50多个跨浏览器、响应灵敏且轻量级的Angular UI控件。SyncFusion Angular UI组件库(Essential JS 2),Angularjs于...
在DOS下弹出CD-ROM的小程序,需要先加载MSCDEX.
倍福EJ模块简介