日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

给模型加装饰器Java,装饰器设计模式

發布時間:2023/11/27 生活经验 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 给模型加装饰器Java,装饰器设计模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

裝飾者模式說, 只是“將靈活的附加職責動態地附加到對象上”。

換句話說, 裝飾器模式使用合成而不是繼承來擴展對象在運行時的功能。

裝飾器模式也稱為包裝器。

裝飾圖案的優勢

它提供了比靜態繼承更大的靈活性。

因為可以通過對新類進行編碼來進行更改, 所以可以增強對象的可擴展性。

它允許你從目標類開發一系列功能, 而不是將所有行為編碼到對象中, 從而簡化了編碼。

裝飾圖案的用法

它用于:

當你想要透明, 動態地向對象添加職責而又不影響其他對象時。

當你想向對象添加職責時, 將來可能需要更改。

通過子類擴展功能不再可行。

用于裝飾器模式的UML:

第1步:創建食物界面。

public interface Food {

public String prepareFood();

public double foodPrice();

}// End of the Food interface.

步驟2:創建一個VegFood類, 該類將實現Food接口并覆蓋其所有方法。

public class VegFood implements Food {

public String prepareFood(){

return "Veg Food";

}

public double foodPrice(){

return 50.0;

}

}

第3步:創建一個FoodDecorator抽象類, 該類將實現Food接口并覆蓋所有方法, 并且可以裝飾更多食物。

public abstract class FoodDecorator implements Food{

private Food newFood;

public FoodDecorator(Food newFood){

this.newFood=newFood;

}

@Override

public String prepareFood(){

return newFood.prepareFood();

}

public double foodPrice(){

return newFood.foodPrice();

}

}

步驟4:創建NonVegFood具體類, 該類將擴展FoodDecorator類并覆蓋所有方法。

public class NonVegFood extends FoodDecorator{

public NonVegFood(Food newFood) {

super(newFood);

}

public String prepareFood(){

return super.prepareFood() +" With Roasted Chiken and Chiken Curry ";

}

public double foodPrice(){

return super.foodPrice()+150.0;

}

}

第5步:創建一個ChineeseFood具體類, 該類將擴展FoodDecorator類并覆蓋所有方法。

public class ChineeseFood extends FoodDecorator{

public ChineeseFood(Food newFood) {

super(newFood);

}

public String prepareFood(){

return super.prepareFood() +" With Fried Rice and Manchurian ";

}

public double foodPrice(){

return super.foodPrice()+65.0;

}

}

步驟6:創建一個DecoratorPatternCustomer類, 該類將使用Food接口來使用客戶想要的食物類型(Decorates)。

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

public class DecoratorPatternCustomer {

private static int choice;

public static void main(String args[]) throws NumberFormatException, IOException{

do{

System.out.print("========= Food Menu ============ \n");

System.out.print(" 1. Vegetarian Food. \n");

System.out.print(" 2. Non-Vegetarian Food.\n");

System.out.print(" 3. Chineese Food. \n");

System.out.print(" 4. Exit \n");

System.out.print("Enter your choice: ");

BufferedReader br=new BufferedReader(new InputStreamReader(System.in));

choice=Integer.parseInt(br.readLine());

switch (choice) {

case 1:{

VegFood vf=new VegFood();

System.out.println(vf.prepareFood());

System.out.println( vf.foodPrice());

}

break;

case 2:{

Food f1=new NonVegFood((Food) new VegFood());

System.out.println(f1.prepareFood());

System.out.println( f1.foodPrice());

}

break;

case 3:{

Food f2=new ChineeseFood((Food) new VegFood());

System.out.println(f2.prepareFood());

System.out.println( f2.foodPrice());

}

break;

default:{

System.out.println("Other than these no food available");

}

return;

}//end of switch

}while(choice!=4);

}

}

輸出量

========= Food Menu ============

1. Vegetarian Food.

2. Non-Vegetarian Food.

3. Chineese Food.

4. Exit

Enter your choice: 1

Veg Food

50.0

========= Food Menu ============

1. Vegetarian Food.

2. Non-Vegetarian Food.

3. Chineese Food.

4. Exit

Enter your choice: 2

Veg Food With Roasted Chiken and Chiken Curry

200.0

========= Food Menu ============

1. Vegetarian Food.

2. Non-Vegetarian Food.

3. Chineese Food.

4. Exit

Enter your choice: 3

Veg Food With Fried Rice and Manchurian

115.0

========= Food Menu ============

1. Vegetarian Food.

2. Non-Vegetarian Food.

3. Chineese Food.

4. Exit

Enter your choice: 4

Other than these no food available

總結

以上是生活随笔為你收集整理的给模型加装饰器Java,装饰器设计模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。