装饰模式9(12)

Posted zzlcome

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了装饰模式9(12)相关的知识,希望对你有一定的参考价值。

你有一座房子,你要装修你的房子

对已有对象增加新功能,而不改变该对象。

 

package structural.pratice;

public class Decoretor2PMain 

    public static void main(String[] args) 

        House f = new FirstHouse();
        DecoretationWorker worker = new DecoretationWorker(f);
        worker.wholeHouse();
    


//房子设计图
interface House
    void beWall();
    void beWindows();
    void beDoors();
    void beRoof();
    void beFloor();
    void wholeHouse();


//建造房子
class FirstHouse implements House
    
    @Override
    public void beWall() 
        System.out.println("建好了墙!");
    

    @Override
    public void beWindows() 
        System.out.println("建好了窗户!");
    

    @Override
    public void beDoors() 
        System.out.println("建好了门!");
    

    @Override
    public void beRoof() 
        System.out.println("建好了房顶!");
    

    @Override
    public void beFloor() 
        System.out.println("建好了地板!");
    

    @Override
    public void wholeHouse() 
        beWall();
        beWindows();
        beDoors();
        beRoof();
        beFloor();
    
    


//装修房子
abstract class DecoreteHouse extends FirstHouse//extends FirstHouse到房子所在位置装修
    protected House f;
    public DecoreteHouse(House f)
        this.f = f;
    


class DecoretationWorker extends DecoreteHouse

    public DecoretationWorker(House f) 
        super(f);
    
    
    @Override
    public void wholeHouse() 
        super.wholeHouse();
        System.out.println();
        System.out.println("======房子已建好!=======");
        System.out.println();
        installAppliances();
        installKitchenToilet();
        installFurniture();
        installFurniture();
        beautifyOrnament();
        bedclothes();
        buyOthers();
    
    
    public void installAppliances()
        System.out.println("安装家电!");
    
    
    public void installKitchenToilet()
        System.out.println("安装厨卫!");
    
    
    public void installFurniture()
        System.out.println("安装家具!");
    
    
    public void beautifyOrnament()
        System.out.println("增添装饰品!");
    
    
    public void bedclothes()
        System.out.println("添置床上用品!");
    
    
    public void buyOthers()
        System.out.println("购置其他家用!");
    

 

以上是关于装饰模式9(12)的主要内容,如果未能解决你的问题,请参考以下文章

9.装饰着模式

装饰者模式的魅力

设置模式9(装饰者,责任链,桥接,访问者)

JS设计模式(12)装饰者模式

策略模式 VS 装饰器模式

设计模式学习笔记--装饰模式