Advertisement
Guest User

Untitled

a guest
Feb 11th, 2016
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.38 KB | None | 0 0
  1. public class Main2 {
  2. @SuppressWarnings("unused")
  3. public static void main(String[] args) {
  4. Car car11 = new BadNativeCar();
  5. Car car12 = new GoodNativeCar();
  6. Car car21 = new BadForeignCar();
  7. Car car22 = new GoodForeignCar();
  8. }
  9. }
  10.  
  11. interface Car{
  12. public void drive();
  13. public void stop();
  14. }
  15.  
  16. class NativeCar implements Car{
  17. @Override
  18. public void drive() {
  19. }
  20. @Override
  21. public void stop() {
  22. }
  23. }
  24.  
  25. class ForeignCar implements Car{
  26. @Override
  27. public void drive() {
  28. }
  29. @Override
  30. public void stop() {
  31. }
  32. }
  33.  
  34. class GoodNativeCar extends NativeCar{
  35. }
  36. class BadNativeCar extends NativeCar{
  37. }
  38. class GoodForeignCar extends ForeignCar{
  39. }
  40. class BadForeignCar extends ForeignCar{
  41. }
  42.  
  43. public class Main2 {
  44. public static void main(String[] args) {
  45. BadCar badCar = new BadCar();
  46. GoodCar goodCar = new GoodCar();
  47. CarAbstraction car11 = new NativeCar(badCar);
  48. CarAbstraction car12 = new NativeCar(goodCar);
  49. CarAbstraction car21 = new ForeignCar(badCar);
  50. CarAbstraction car22 = new ForeignCar(goodCar);
  51. }
  52. }
  53.  
  54. interface CarAbstraction{
  55. public void drive();
  56. public void stop();
  57. }
  58.  
  59. //Abstraction
  60. abstract class CarAbstractionImpl implements CarAbstraction{
  61. private CarImplementor carImplementor;
  62.  
  63. public CarAbstractionImpl(CarImplementor carImplementor) {
  64. this.carImplementor = carImplementor;
  65. }
  66.  
  67. @Override
  68. public void drive() {
  69. carImplementor.drive();
  70. }
  71. @Override
  72. public void stop() {
  73. carImplementor.stop();
  74. }
  75. }
  76.  
  77. //RefinedAbstraction1
  78. class NativeCar extends CarAbstractionImpl{
  79. public NativeCar(CarImplementor carImplementor) {
  80. super(carImplementor);
  81. }
  82. }
  83. //RefinedAbstraction2
  84. class ForeignCar extends CarAbstractionImpl{
  85. public ForeignCar(CarImplementor carImplementor) {
  86. super(carImplementor);
  87. }
  88. }
  89.  
  90.  
  91.  
  92. //Implementor
  93. interface CarImplementor extends CarAbstraction{
  94. }
  95.  
  96. //ConcreteImplementor1
  97. class GoodCar implements CarImplementor{
  98. @Override
  99. public void drive() {
  100. }
  101. @Override
  102. public void stop() {
  103. }
  104. }
  105.  
  106. //ConcreteImplementor2
  107. class BadCar implements CarImplementor{
  108. @Override
  109. public void drive() {
  110. }
  111. @Override
  112. public void stop() {
  113. }
  114. }
  115.  
  116. ________Car_________
  117. /
  118. NativeCar ForeignCar
  119. / /
  120. GoodNativeCar BadNativeCar GoodForeignCar BadForeignCar
  121.  
  122. CarAbstraction
  123. |
  124. CarAbstractionImpl-------------HAS-A-------> CarImplementor
  125. / /
  126. NativeCar ForeignCar GoodCar BadCar
  127.  
  128. When:
  129.  
  130. A
  131. /
  132. Aa Ab
  133. / /
  134. Aa1 Aa2 Ab1 Ab2
  135.  
  136. Refactor to:
  137.  
  138. A N
  139. / /
  140. Aa(N) Ab(N) 1 2
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement