简单工厂模式和适配器模式

本文介绍了面向接口编程中的简单工厂模式,强调了其通过制定标准并屏蔽子类实现差异来提升代码拓展性和可维护性的优势。此外,还探讨了适配器模式,说明在面对现有类接口不符合需求时,如何通过适配器选择性地使用所需方法,以实现特定功能,如从包含多个行为的类中仅提取关闭行为。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

面向接口编程之制定标准和简单工厂模式

制定一个标准,让别人去实现或者说满足它!

interface USB{//定义USB标准
    void useUSB();//USB有使用USB的行为
}

简单工厂模式
构建一个工厂出来,在里面进行生产,用的时候直接拿

我的总结:
好处:屏蔽不同子类实现的差异,提高代码的可拓展性和可维护性;

package reviewDemo;
//简单工厂模式

interface Phone{//制定标准,都要实现send()方法
    public void send();
}

class Iphone implements Phone{
    @Override
    public void send() {
        System.out.println("Iphone手机在发短信");
    }
}

class AndroidPhone implements Phone{
    @Override
    public void send() {
        System.out.println("AndroidPhone手机在发短信");
    }
}

class MyPhone implements Phone{
    @Override
    public void send() {
        System.out.println("MyPhone手机在发短信");
    }
}
class Factory{
    public static void show(String type){//传入参数,根据不同的类型个性化定制
        if(type.equals("")){//为空的情况,不用往下执行
            System.out.println("对不起,类型为空!,请重新输入!");
            return;
        }
        Phone p = null;
        if("Iphone".equals(type)){//判断类型
            p = new Iphone();
        }else if("AndroidPhone".equals(type)){
            p = new AndroidPhone();
        }else{
            p = new MyPhone();
        }
        p.send();
    }
}

public class FactoryDemo17 {
    public static void main(String[] args) {

        new Factory().show("Iphone");//调用方法
        new Factory().show("AndroidPhone");
        new Factory().show("MyPhone");
        new Factory().show("YourPhone");
        new Factory().show("");
    }
}
输出: 
Iphone手机在发短信 
AndroidPhone手机在发短信 
MyPhone手机在发短信 
MyPhone手机在发短信 
对不起,类型为空!

14、面向接口编程之适配器模式
使用一个现成的类,但是它的接口不完全符合你的需求,我只想要它其中的一个方法,不想覆写其他的方法。

举一个 很简单的例子:比如,窗体有变大,变小,关闭的行为,但是我现在只需要关闭行为;

package reviewDemo;
//适配器模式:只想用其中的某一个方法,用适配器作为中间的过渡

interface Windows{
    void max();
    void min();
    void close();
}
//适配器模式,实现接口所有的方法,但是不写方法体!

class AdapterWindows implements Windows{

    @Override
    public void max() {
    }

    @Override
    public void min() {
    }

    @Override
    public void close() {
    }

}
class MyWindows extends AdapterWindows{
    //覆写父类的方法
    public void close(){
        System.out.println("这个实现的是关闭功能!");
    }
}

public class Demo17 {
    public static void main(String[] args) {
        new MyWindows().close();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿龙Growing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值