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("这是一台电脑"); } }
原文:https://www.cnblogs.com/LZz089/p/12891683.html