在什么网站做调查问卷,肇庆网页制作公司,用手机制作word文档的app,商品价格网3.设计模式–创建者模式–工厂模式
3.1简单工厂和静态 工厂#xff08;不属于23中设计模式#xff09;
//抽象类#xff1a;定义了产品的规范#xff0c;描述了产品的主要特性和功能
public interface Tea {public abstract void setName();public abstract String getNa…3.设计模式–创建者模式–工厂模式
3.1简单工厂和静态 工厂不属于23中设计模式
//抽象类定义了产品的规范描述了产品的主要特性和功能
public interface Tea {public abstract void setName();public abstract String getName();}//具体产品实现或者继承抽象产品的子类
public class XiaoGuanTea implements Tea {private String name;public void setName() {this.name 小罐茶;}public String getName() {return this.name;}
}// 具体类实现或者继承抽象产品的子类
public class UsuallyTea implements Tea {private String name;public void setName() {this.name 普通茶;}public String getName() {return this.name;}
}// 具体工厂 提供了创建产品的方法调用者通过该方法来获取产品。
public class TeaCompany {public static void createTea(String name){//如果加了一个static就是静态工厂,没加就是普通工厂Tea tea null;if(小罐茶.equals(name)){tea new XiaoGuanTea();}else{tea new UsuallyTea();}tea.setName();System.out.println(tea.getName());}public static void main(String[] args) {createTea(小罐茶);createTea(aaa);}
}优缺点
优点
封装了创建对象的过程可以通过参数直接获取对象。把对象的创建和业务逻辑层分开这样以后就避免了修改客户代码如果要实现新产品直接修改工厂类而不需要在原代码中修改这样就降低了客户代码修改的可能性更加容易扩展。
缺点
增加新产品时还是需要修改工厂类的代码违背了“开闭原则”。
3.2工厂方法 只考虑生产同等级的产品同抽象类的产品抽象类只有一个
//抽象产品定义了产品的规范描述了产品的主要特性和功能
public interface Tea {public abstract String getName();}// 具体产品实现或者继承抽象产品的子类
public class UsuallyTea implements Tea {private String name;public UsuallyTea(){this.name普通茶;}public String getName() {return this.name;}
}//具体产品实现或者继承抽象产品的子类
public class XiaoGuanTea implements Tea {private String name;public XiaoGuanTea(){this.name小罐茶;}public String getName() {return this.name;}
}// 抽象工厂:供了创建产品的接口调用者通过它访问具体工厂的工厂方法来创建产品。
public interface TeaFactory {Tea createTea(); //创建茶的接口
}// 具体工厂主要是实现抽象工厂中的抽象方法完成具体产品的创建。
public class UsuallyTeaFactory implements TeaFactory{//小罐茶工厂Overridepublic Tea createTea() {return new UsuallyTea();}
}// 具体工厂主要是实现抽象工厂中的抽象方法完成具体产品的创建。
public class XiaoGuanTeaFactory implements TeaFactory{//小罐茶工厂Overridepublic Tea createTea() {return new XiaoGuanTea();}
}// 店根据具体的工厂生产茶
public class TeaStore {private TeaFactory factory;//茶工厂放到店里面,合作public TeaStore(TeaFactory factory) {this.factory factory;}public void orderTea(){//点茶Tea tea factory.createTea();String name tea.getName();System.out.println(name);}public static void main(String[] args) {//客人来点茶TeaStore teaStore new TeaStore(new XiaoGuanTeaFactory());//小罐茶teaStore.orderTea();TeaStore tea new TeaStore(new UsuallyTeaFactory());//普通茶tea.orderTea();}
}
工厂方法模式是简单工厂模式的进一步抽象。由于使用了多态性工厂方法模式保持了简单工厂模式的优点而且克服了它的缺点。
优缺点
优点
用户只需要知道具体工厂的名称就可得到所要的产品无须知道产品的具体创建过程在系统增加新的产品时只需要添加具体产品类和对应的具体工厂类无须对原工厂进行任何修改满足开闭原则
缺点
每增加一个产品就要增加一个具体产品类和一个对应的具体工厂类这增加了系统的复杂度。
3.3 抽象工厂
可以查看 https://www.runoob.com/design-pattern/abstract-factory-pattern.html