java中的简单工厂模式

第三方:工厂类,将客户端的产生对象与具体子类分离,提取(解耦)到专门的工厂中产生对象。
简单工厂模式:专门定义一个类用来创建其它类的实例,被创建的实例通常都具有共同的父类。
问题本质:主方法(客户端)直接与具体产品交互。
如何解决:将客户端产生商品的行为(new对象)提取到一个新的类中–>工厂类
思考以下情景:某同学去电脑商城买电脑,他特别喜欢两款电脑,一款是Mac,另一款是Win。

interface Computer{
    void putComputer();
}
class Mac implements Computer{
    public void putComputer(){
        System.out.println("我要一台mac电脑");
    }
}
class Win implements Computer{
    public void putComputer() {
        System.out.println("我想要一台win电脑");
    }
}
public class Test {
    public void print(Computer computer) {
        computer.putComputer();
    }
    public static void main(String[] args) {
        Test test = new Test();
        test.print(new Mac());
    }
}

运行结果:
运行结果
考虑到顾客有可能做出其他选择,我们不得不返回客户端去改代码,为了方便进行我们程序设计人员,专门设定一个工厂类来创建其他类的实例,被创建的类通常有共同的父类。

//简单工厂类
class ComputerFactory{
    public static Computer fun(String name){
        Computer computer = null;
        if(name.equals("mac")){
            computer = new Mac();
        }else if(name.equals("win")){
            computer = new Win();
        }
        return computer;
    }
}
public class Test{
    public void print(Computer computer){
        computer.putComputer();
    }
    public static void main(String[] args) {
        Test test = new Test();
        String answer = null;
        System.out.println("请问您要什么型号的电脑?");
        Scanner scanner = new Scanner(System.in);
        answer = scanner.nextLine();
        Computer computer = ComputerFactory.fun(answer);
        test.print(computer);
    }
}

运行结果
从上我们可以得出简单工厂模式的特点
① 有一个抽象产品类(如接口)
② 有多个具体的产品类(如Mac)
③ 有一个工厂类用来创建其他类的实例
简单工厂模式的缺点:违背了开闭原则(OCP)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值