每日随笔——装饰模式

[实验任务一]:手机功能的升级

用装饰模式模拟手机功能的升级过程:简单的手机(SimplePhone)在接收来电时,会发出声音提醒主人;而JarPhone除了声音还能振动;更高级的手机(ComplexPhone)除了声音、振动外,还有灯光闪烁提示。

实验要求:

1.提交类图;

2.提交源代码;

3.注意编程规范。

 

源码:

复制代码
Client
package sc11;

public class Client {

    public static void main(String[]args) {
        Phone p=new SimplePhone();
        p.receiveCall();
        System.out.println("Simple");
        Phone p1=new JarPhone(p);
        p1.receiveCall();
        System.out.println("JarPhone");
        Phone p2=new ComplexPhone(p1);
        p2.receiveCall();
        System.out.println("ComplexPhone");
    }

}

ComplexPhone
package sc11;

public class ComplexPhone extends PhoneDecorator{

    public ComplexPhone(Phone p) {
        // TODO Auto-generated constructor stub
        super(p);
    }
    public void receiveCall() {
        super.receiveCall();
        System.out.println("接受来电,灯光闪烁");
    }

}

JarPhone
package sc11;

public class JarPhone extends PhoneDecorator{

    public JarPhone(Phone p) {
        // TODO Auto-generated constructor stub
        super(p);
    }
    public void receiveCall() {
        super.receiveCall();
        System.out.println("接受来电,手机震动");
    }

}

Phone
package sc11;

public abstract class Phone {

    public abstract void receiveCall();

}

PhoneDecorator
package sc11;

public class PhoneDecorator extends Phone{

    private Phone phone;
    public PhoneDecorator(Phone p) {
        // TODO Auto-generated constructor stub
        if(p!=null) {
            phone=p;
        }else {
            phone=new SimplePhone();
        }
    }
    @Override
    public void receiveCall() {
        // TODO Auto-generated method stub
        phone.receiveCall();
    }

}

SimplePhone
package sc11;

public class SimplePhone extends Phone {
.


    @Override
    public void receiveCall() {
        // TODO Auto-generated method stub
        System.out.println("接受来电,电话响了");
    }

}
复制代码

 

 

 

posted @   伽澄  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示