设计模式 实验10实验11
实验十组合模式

package test10; public abstract class FileSystem { protected String name; public FileSystem(String name) { this.name = name; } public abstract void display(); }
package test10; public class File extends FileSystem{ public File(String name) { super(name); } @Override public void display() { System.out.println("File: " + name); } }
package test10; import java.util.ArrayList; import java.util.List; public class Folder extends FileSystem{ private List<FileSystem> children; public Folder(String name) { super(name); children = new ArrayList<>(); } public void add(FileSystem component) { children.add(component); } public void remove(FileSystem component) { children.remove(component); } @Override public void display() { System.out.println("Folder: " + name); for (FileSystem component : children) { component.display(); } } }
package test10; public class Main { public static void main(String[] args) { Folder root = new Folder("Root"); Folder documents = new Folder("文本文件"); Folder pictures = new Folder("图片"); File document1 = new File("新建文档1.txt"); File document2 = new File("单词1.txt"); File picture1 = new File("风景.jpg"); File picture2 = new File("名画.jpg"); documents.add(document1); documents.add(document2); pictures.add(picture1); pictures.add(picture2); root.add(documents); root.add(pictures); root.display(); } }
实验十一

package test11; public interface Phone { void receiveCall(); } package test11; public abstract class PhoneDecorator implements Phone { protected Phone decoratedPhone; public PhoneDecorator(Phone decoratedPhone) { this.decoratedPhone = decoratedPhone; } @Override public void receiveCall() { decoratedPhone.receiveCall(); } }
package test11; public class JarPhone extends PhoneDecorator { public JarPhone(Phone decoratedPhone) { super(decoratedPhone); } @Override public void receiveCall() { super.receiveCall(); System.out.println("升级为JarPhone: 铃声加震动提示用户"); } } package test11; public final class SimplePhone implements Phone { @Override public void receiveCall() { System.out.println("SimplePhone: 铃声提示"); } }
package test11; public class ComplexPhone extends PhoneDecorator { public ComplexPhone(Phone decoratedPhone) { super(decoratedPhone); } @Override public void receiveCall() { super.receiveCall(); System.out.println("升级为ComplexPhone: 铃声震动加闪烁提示"); } }
package test11; public class Main { public static void main(String[] args) { // 创建简单手机 Phone simplePhone = new SimplePhone(); simplePhone.receiveCall(); System.out.println(); // 升级为振动手机 Phone jarPhone = new JarPhone(simplePhone); jarPhone.receiveCall(); System.out.println(); // 升级为振动和闪光手机 Phone complexPhone = new ComplexPhone(simplePhone); complexPhone.receiveCall(); } }
浙公网安备 33010602011771号