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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

java学习--装饰器设计模式

發布時間:2023/12/15 asp.net 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java学习--装饰器设计模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

裝飾器設計模式

  • 例一:實現對聲音的的放大功能

  • 源碼:

    package me.sgyz.study02;/***實現放大器對聲音的的放大功能* @ 洛塵曦**/public class DecorateTest01 {public static void main(String[] args) {Person p = new Person();p.say();//裝飾器Amplifier am =new Amplifier(p);am.say();} }interface Say{void say();}class Person implements Say{//屬性private int voice = 10;@Overridepublic void say() {System.out.println("人的聲音為"+this.getVoice());}public void setVoice(int voice) {this.voice = voice;}public int getVoice() {return voice;} }//放大器 class Amplifier implements Say{private Person p;Amplifier(Person p){this.p=p;}@Overridepublic void say() {System.out.println("人的聲音為"+p.getVoice()*100);System.out.println("噪音.............");}}
  • 例二:模擬咖啡

    • 1、抽象組件
    • 2、具體組件
    • 3、抽象裝飾類
    • 4、裝飾類
    package me.sgyz.study02;/***模擬咖啡* 1.抽象組件* @ 洛塵曦**/public class DecorateTest02 {public static void main(String[] args) {Drink coffee = new Coffee();Drink suger = new Suger(coffee);System.out.println(suger.info()+"-->"+suger.cost());Drink milk = new Milk(coffee);System.out.println(milk.info()+"-->"+milk.cost());milk = new Milk(suger);System.out.println(milk.info()+"-->"+milk.cost());} }//抽象組件 interface Drink{double cost();//費用String info();//說明}//具體組件 class Coffee implements Drink{private String name = "原味咖啡";@Overridepublic double cost() {return 10;}@Overridepublic String info() {return name;} }//抽象裝飾類 abstract class Decroate implements Drink{private Drink drink;public Decroate(Drink drink){this.drink=drink;}@Overridepublic double cost() {return this.drink.cost();}@Overridepublic String info() {return this.drink.info();} }//具體裝飾類 class Milk extends Decroate{public Milk(Drink drink){super(drink);}@Overridepublic double cost() {return super.cost()*4;}@Overridepublic String info() {return super.info()+"加入了牛奶";} }//具體裝飾類 class Suger extends Decroate{public Suger(Drink drink){super(drink);}@Overridepublic double cost() {return super.cost()*2;}@Overridepublic String info() {return super.info()+"加入了蔗糖";} }

總結

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

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