public interface Brand { // 品牌口号 String brandVoice(); }
public class Xiaomi implements Brand { @Override public String brandVoice() { return "为发烧而生..."; } }
public interface PhoneStyle { // 手机样式 String style(); }
public abstract class Phone { //组合品牌 private Brand mBrand; //构造器 public Phone(Brand mBrand) { this.mBrand = mBrand; } protected void open(){ this.mBrand.brandVoice(); System.out.println("phone open"); } protected void close(){ this.mBrand.brandVoice(); System.out.println("phone close"); } protected void call(){ this.mBrand.brandVoice(); System.out.println("phone call"); } }
定义具体的Phone类
//折叠式手机类,继承抽象类Phone public class FoldedPhone extends Phone implements PhoneStyle { //构造器 public FoldedPhone(Brand mBrand) { super(mBrand); } public void open(){ super.open(); style(); } public void close(){ super.close(); style(); } public void call(){ super.call(); style(); } @Override public String style() { return "折叠式手机"; } }
public class Client { public static void main(String[] args){ //获取折叠式手机(样式+品牌) Phone phone1 = new FoldedPhone(new Xiaomi()); phone1.open(); phone1.call(); phone1.close(); } }