将复杂的结构与其表示分开,使相同的结构过程能够创造不同的表示。
Mainpublic class Main { public static void main(String[] args) { ExampleBuild exampleBuild = new ExampleBuild(); exampleBuild.addExample(new Example1(); exampleBuild.addExample(new Example2(); exampleBuild.addExample(new Example3(); float num = exampleBuild.getNum(); System.out.println(num); }}
ExampleInterfacepublic interface ExampleInterface { public String name(); public float price();}
Example1public class Example1 implements ExampleInterface { @Override public String name() { return Example1; } @Override public float price() { return 1; }}
Example2public class Example2 implements ExampleInterface { @Override public String name() { return Example2; } @Override public float price() { return 2; }}
Example3public class Example3 implements ExampleInterface { @Override public String name() { return Example3; } @Override public float price() { return 3; }}
ExampleBuildpublic class ExampleBuild { private List<ExampleInterface> exampleList = new ArrayList<ExampleInterface>(); //添加 public void addExample(ExampleInterface exampleInterface){ exampleList.add(exampleInterface); } //获取所有数量 public float getNum(){ float num = 0.0f; for (ExampleInterface exampleInterface : exampleList) { num += exampleInterface.price(); } return num; }}