需求:有规格的尺子,不管何种笔写,写出的字大小、形状都是一样的?抽象为处理流程一致,仅仅是不同的实现
代码清单:
抽象类:
public abstract class AbstractDisplay{ public abstract void open(); public abstract void print(); public abstract void close(); public void display(){ open(); for(int i=0;i<5;i++){ print(); } close(); } }
实现1:
public class CharDisplay extends AbstractDisplay{ private char ch; CharDisplay(char ch){ this.ch = ch; } @Override public void open() { System.out.print("《"); } @Override public void print() { System.out.print(ch); } @Override public void close() { System.out.println("》"); } }
实现2:
public class StringDisplay extends AbstractDisplay{ private String str; private int width; StringDisplay(String str){ this.str= str; this.width=str.getBytes().length; } @Override public void open() { printLine(); } @Override public void print() { System.out.println("|"+str+"|"); } @Override public void close() { printLine(); } public void printLine(){ System.out.print("+"); for(int i=0;i<width;i++){ System.out.print("-"); } System.out.println("+"); } }
测试类:
public class Main { public static void main(String[] args){ AbstractDisplay dis1 = new CharDisplay('A'); AbstractDisplay dis2 = new StringDisplay("Hello"); dis1.display(); dis2.display(); } }
上述:具体的实现交给子类,处理流程由父类定义,即模板模式