工厂模式

import java.util.Scanner;

public class TestFactory {

public static void main(String[] args) {
    Client client = new Client();
    /*Computer computer = new SurfaceBookComputer();
    Computer computer = new AlienwareComputer();
    client.buyComputer(computer);*/
    System.out.println("请输入您购买的计算机类型:mac,surface,Alienware");
    Scanner scanner = new Scanner(System.in);
    String type = scanner.next();
    Computer computer = ComputerFactory.createComputer(type);
    if (computer == null){
        System.out.println("工厂不能生产指定类型的计算机"+type);

    }else {
        client.buyComputer(computer);
    }
}

}
class Client{

public void buyComputer(Computer computer){
    computer.printComputer();
}

}
/*
简单工厂
1.客户端创建对象的逻辑,放到一个静态方法中,简单工厂类
2.缺点:新增类型,需要修改工厂类的逻辑
3.优点:客户端和具体的接口实现类的示例对象逻辑解耦
*/
class ComputerFactory{

public static Computer createComputer(String type){
    switch (type){
        case "mac":{
            return new MacProComputer();
        }
        case "surface":{
            return new SurfaceBookComputer();
        }
        case "Alienware":{
            return new AlienwareComputer();
        }default:
            return null;
    }
}

}
interface Computer{
//打印具体的计算机信息

void printComputer();

}

class MacProComputer implements Computer{

@Override
public void printComputer() {
    System.out.println("Mac Pro   漂亮,贵, 好用");
}

}
class SurfaceBookComputer implements Computer{

    @Override
    public void printComputer() {
        System.out.println("Surface 屏幕可旋转,微软出品");
    }

}
class AlienwareComputer implements Computer{

@Override
public void printComputer() {
    System.out.println("Alienware  便宜,配置高,物美价廉");
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值