code_junkie

Immutable beans in Java

Nov 12th, 2011
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.30 KB | None | 0 0
  1. public interface DateBean {
  2. public Date getDate();
  3. public DateBean getImmutableInstance();
  4. public DateBean getMutableInstance();
  5. }
  6.  
  7. public class ImmutableDate implements DateBean {
  8. private Date date;
  9.  
  10. ImmutableDate(Date date) {
  11. this.date = new Date(date.getTime());
  12. }
  13.  
  14. public Date getDate() {
  15. return new Date(date.getTime());
  16. }
  17.  
  18. public DateBean getImmutableInstance() {
  19. return this;
  20. }
  21.  
  22. public DateBean getMutableInstance() {
  23. MutableDate dateBean = new MutableDate();
  24. dateBean.setDate(getDate());
  25. return dateBean;
  26. }
  27. }
  28.  
  29. public class MutableDate implements DateBean {
  30. private Date date;
  31.  
  32. public Date getDate() {
  33. return date;
  34. }
  35.  
  36. public void setDate(Date date) {
  37. this.date = date;
  38. }
  39.  
  40. public DateBean getImmutableInstance() {
  41. return new ImmutableDate(this.date);
  42. }
  43.  
  44. public DateBean getMutableInstance() {
  45. MutableDate dateBean = new MutableDate();
  46. dateBean.setDate(getDate());
  47. return dateBean;
  48. }
  49. }
  50.  
  51. public class ImmutableDate implements DateBean
  52. {
  53. private DateBean delegate;
  54.  
  55. public ImmutableDate(DateBean d)
  56. {
  57. this.delegate = d;
  58. }
  59.  
  60. public Date getDate()
  61. {
  62. return delegate.getDate();
  63. }
  64. }
  65.  
  66. public interface DateBean {
  67. public Date getDate();
  68. }
  69.  
  70. public class ImmutableDate implements DateBean {
  71. private final long date;
  72.  
  73. ImmutableDate(long date) {
  74. this.date = date;
  75. }
  76.  
  77. ImmutableDate(Date date) {
  78. this(date.getTime());
  79. }
  80.  
  81. ImmutableDate(DateBean bean) {
  82. this(bean.getDate());
  83. }
  84.  
  85. public Date getDate() {
  86. return new Date(date);
  87. }
  88. }
  89.  
  90.  
  91. public class MutableDate implements DateBean {
  92. private long date;
  93.  
  94. MutableDate() {}
  95.  
  96. MutableDate(long date) {
  97. this.date = date;
  98. }
  99.  
  100. MutableDate(Date date) {
  101. this(date.getTime());
  102. }
  103.  
  104. MutableDate(DateBean bean) {
  105. this(bean.getDate());
  106. }
  107.  
  108. public Date getDate() {
  109. return new Date(date);
  110. }
  111.  
  112. public void setDate(Date date) {
  113. this.date = date.getTime();
  114. }
  115.  
  116. }
  117.  
  118. public interface User{
  119.  
  120. long getId();
  121.  
  122. String getName();
  123.  
  124. int getAge();
  125.  
  126. }
  127.  
  128. public interface MutableUser extends User{
  129.  
  130. void setName(String name);
  131.  
  132. void setAge(int age);
  133.  
  134. }
  135.  
  136. public void validateUser(User user){
  137. if(user.getName() == null) ...
  138. }
  139.  
  140. public void updateUserAge(MutableUser user, int age){
  141. user.setAge(age);
  142. }
Add Comment
Please, Sign In to add comment