工厂模式的简单案例

简单工厂模式

案例:顾客到商店买电脑

1、首先,创建一个电脑公有的接口

/**
 *电脑接口
 */
public interface IComputer {
    //电脑都能用于开发
    public void kaiFa() ;
}

2、创建具体实体,实现公有的接口,这里是两个品牌电脑

/**
 * 苹果电脑实现类
 */
public class AppleComputer implements IComputer{

    @Override
    public void kaiFa() {
        System.out.println("用苹果电脑开发程序!");
    }

}
/**
 * 联想电脑实现类
 */
public class LenovoComputer implements IComputer{

    @Override
    public void kaiFa() {
        System.out.println("用联想电脑开发程序");
    }

}

3、创建电脑工厂,通过参数来判断客户需要什么电脑
备注:这里需要创建一个静态方法,所以简单工厂模式又称为静态工厂模式

/**
 *电脑工厂 
 */
public class ComputerFactory {

    private static IComputer computer=null;

    public static IComputer getComputer(String name) {
        if(name.equals("apple")) {
            computer = new AppleComputer();
        }else if(name.equals("lenovo")) {
            computer = new LenovoComputer();
        }
        return computer;
    }
}

4、创建客户类

/**
 * 客户类
 */
public class Client {
    public static void main(String[] args) {
        //实例化工厂
        ComputerFactory computerFactory=new ComputerFactory();
        //通过具体参数来创建具体实物
        IComputer computer=computerFactory.getComputer("apple");
        System.out.println(computer);
        computer.kaiFa();
    }
}

运行:创建出了具体对象!
这里写图片描述

工厂方法模式

还是上面那个案例,只不过是升华版。

1、创建接口,创建实体类,实现接口,这里一笔带过,和上面一样

/**
 *电脑接口
 */
public interface IComputer {
    //电脑都能用于开发
    public void kaiFa() ;
}
//创建实体1
public class LenovoComputer implements IComputer{

    @Override
    public void kaiFa() {
        System.out.println("用联想电脑开发程序");
    }
}
//创建实体2
public class AppleComputer implements IComputer{

    @Override
    public void kaiFa() {
        System.out.println("用苹果电脑开发程序!");
    }
}

2、创建一个工厂接口,目的:为了创建具体的工厂

public interface IComputerFactory {
    //创建具体的实体
    public IComputer createComputer();
}

3、为每一个实体创建单独的工厂,实现创建工厂接口

//联想工厂
public class LenovoFactory implements IComputerFactory{

    @Override
    public IComputer createComputer() {
        //单独工厂创建单独实体
        IComputer computer=new LenovoComputer();
        return computer;
    }
}

//苹果工厂
public class AppleFactory implements IComputerFactory{

    @Override
    public IComputer createComputer() {
        //单独工厂创建单独实体
        IComputer computer = new AppleComputer();
        return computer;
    }

}

4、客户类

/**
 * 客户类
 */
public class Client {
    public static void main(String[] args) {
        //实例化工厂
        IComputerFactory computerFactory=new LenovoFactory();
        //通过工厂创建具体实体类
        IComputer computer=computerFactory.createComputer();
        //调用实体类的方法
        computer.kaiFa();
    }
}

运行结果:
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值