简单工厂设计模式

1.简单工厂设计模式:

假如我们设置一个工厂,里面可以生产手机电脑等,一般我们都是这么定义的

public class Test18 {
    public static void main(String []args) {
        Product s = new Phone();  
        s.work();
    }
}


//产品接口
interface Product{
    //可以工作,定义一个工作方法
    public void work();
}
//制作手机的类
class Phone implements Product{
    public void work() {
        System.out.println("手机正在工作");
    }
}
class Computer implements Product{
    public void work() {
        System.out.println("这是一台电脑");
    }
}

这时候我们会发现,假如我们制作手机的类需求不需要了删掉了,这时候我们创建对象的代码就会报错,因为Product s = new Phone();和类依赖性太高了,这时候我们就要降低依赖性,所以就有了这个设计模式:简单工厂设计模式;

我们再写一个工厂类:

//工厂类
class ProductFactory{
    //工厂生产产品 所以是Product  获取产品,传入相对应的参数
    public static Product getProduct(String name) {   //静态方法
        //判断语句
        if("Phone".equals(name)) {    //判断 如果你想要Phone,如果Phone等于传入的参数
            return new Phone();  //那就返回Phone (生产Phone)
        }else if("Computer".equals(name)) {   //如果Computer等于传入的参数
            return new Computer();//那就给他返回Computer
        }else {
            return null;  //如果这个工厂只能生产两种产品,你还想要其他的,满足不了需求,只能返回null
            //如果需求增加了,那就再写一个增加的需求类,再添加判断即可
        }
    }
}

整体代码:

/**
 * 
    设计模式:简单工厂模式
 */
public class Test18 {
    public static void main(String []args) {
        //使用者与被使用者之间,耦合,产生依赖,当被使用者(Phone)改变时会影响
        //Product s = new Phone();
        Product phone = ProductFactory.getProduct("Phone");  //静态方法直接调用类名加方法即可调用
        
        phone.work();
    }
}

//工厂类
class ProductFactory{
    //工厂生产产品 所以是Product  获取产品,传入相对应的参数
    public static Product getProduct(String name) {   //静态方法
        //判断语句
        if("Phone".equals(name)) {    //判断 如果你想要Phone,如果Phone等于传入的参数
            return new Phone();  //那就返回Phone (生产Phone)
        }else if("Computer".equals(name)) {   //如果Computer等于传入的参数
            return new Computer();//那就给他返回Computer
        }else {
            return null;  //如果这个工厂只能生产两种产品,你还想要其他的,满足不了需求,只能返回null
            //如果需求增加了,那就再写一个增加的需求类,再添加判断即可
        }
    }
}


//产品接口
interface Product{
    //可以工作,定义一个工作方法
    public void work();
}
//制作手机的类
class Phone implements Product{
    public void work() {
        System.out.println("手机正在工作");
    }
}

class Computer implements Product{
    public void work() {
        System.out.println("这是一台电脑");
    }
}

 

posted @ 2020-05-14 22:05  老智障  阅读(140)  评论(0编辑  收藏  举报