1. Arahan penggunaan
(1) Corak penghias boleh membawa fungsi sambungan yang lebih fleksibel daripada warisan Ia boleh diperolehi dengan menggabungkan objek penghias yang berbeza menggunakan lebih banyak kaedah dengan keadaan tingkah laku yang berbeza. Corak penghias lebih berskala daripada pewarisan dan dengan sempurna mengikut prinsip pembukaan dan penutupan Pewarisan adalah tanggungjawab tambahan statik, manakala penghias ialah tanggungjawab tambahan yang dinamik.
(2) Kelas menghias dan kelas berhias boleh berkembang secara berasingan dan tidak akan digabungkan antara satu sama lain Mod hiasan ialah mod alternatif kepada pewarisan secara dinamik boleh melanjutkan fungsi kelas pelaksanaan .
2. Contoh
public class HelloWorld { public static void main(String[] args) { //点一份炒饭 FastFood food = new FriedRice(); //花费的价格 System.out.println(food.getDesc() + " " + food.cost() + "元"); System.out.println("========"); //点一份加鸡蛋的炒饭 FastFood food1 = new FriedRice(); food1 = new Egg(food1); //花费的价格 System.out.println(food1.getDesc() + " " + food1.cost() + "元"); System.out.println("========"); //点一份加培根的炒面 FastFood food2 = new FriedNoodles(); food2 = new Bacon(food2); //花费的价格 System.out.println(food2.getDesc() + " " + food2.cost() + "元"); } } // 快餐抽象类 abstract class FastFood { private float price; private String desc; public FastFood() {} public FastFood(float price, String desc) { this.price = price; this.desc = desc; } public float getPrice() { return price; } public void setPrice(float price) { this.price = price; } public String getDesc() { return desc; } public void setDesc(String desc) { this.desc = desc; } // 获取价格 public abstract float cost(); } // 炒饭 class FriedRice extends FastFood { public FriedRice() { super(10, "炒饭"); } @Override public float cost() { return getPrice(); } } // 炒面 class FriedNoodles extends FastFood { public FriedNoodles() { super(12, "炒面"); } @Override public float cost() { return getPrice(); } } // 配料 abstract class Garnish extends FastFood { private FastFood fastFood; public FastFood getFastFood() { return fastFood; } public void setFastFood(FastFood fastFood) { this.fastFood = fastFood; } public Garnish(FastFood fastFood, float price, String desc) { super(price, desc); this.fastFood = fastFood; } } // 鸡蛋配料 class Egg extends Garnish { public Egg(FastFood fastFood) { super(fastFood, 1, "鸡蛋"); } @Override public float cost() { return getPrice() + getFastFood().getPrice(); } @Override public String getDesc() { return super.getDesc() + getFastFood().getDesc(); } } //培根配料 class Bacon extends Garnish { public Bacon(FastFood fastFood) { super(fastFood,2,"培根"); } @Override public float cost() { return getPrice() + getFastFood().getPrice(); } @Override public String getDesc() { return super.getDesc() + getFastFood().getDesc(); } }
Atas ialah kandungan terperinci Cara menggunakan corak penghias java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!