安阳区号,福田企业网站优化哪个好,wordpress 广告格子,水果配送网站建设工厂模式#xff1a;属于 创建型模 式#xff0c;最常用的设计模式之一#xff0c;提供了一种创建对象的最佳方式。 介绍
意图#xff1a;定义一个创建对象的接口#xff0c;让其子类自己决定实例化哪一个工厂类#xff0c;工厂模式使其创建过程延迟到子类进行。主要解决… 工厂模式属于 创建型模 式最常用的设计模式之一提供了一种创建对象的最佳方式。 介绍
意图定义一个创建对象的接口让其子类自己决定实例化哪一个工厂类工厂模式使其创建过程延迟到子类进行。主要解决问题我们明确地计划不同条件下创建不同实例时使用主要解决接口选择的问题。关键代码主要解决接口选择的问题。优点1、一个调用者想创建一个对象只要知道其名称就可以了。 2、扩展性高如果想增加一个产品只要扩展一个工厂类就可以。 3、屏蔽产品的具体实现调用者只关心产品的接口。缺点每次增加一个产品时都需要增加一个具体类和对象实现工厂使得系统中类的个数成倍增加在一定程度上增加了系统的复杂度同时也增加了系统具体类的依赖。这并不是什么好事。
示例 图形绘制工厂示例 三角形圆形矩形
创建一个接口 public interface Shape {void draw();
} 创建实现接口的实体类 public class Triangle implements Shape {Overridepublic void draw() {//绘制三角形}
} public class Circle implements Shape {Overridepublic void draw() {//绘制圆形}
} public class Rectangle implements Shape {Overridepublic void draw() {//绘制矩形}
} 创建一个工厂生成基于给定信息的实体类的对象 public class ShapeFactory {//使用 getShape 方法获取形状类型的对象public Shape getShape(String shapeType){if(shapeType null){return null;}if(shapeType.equalsIgnoreCase(CIRCLE)){return new Circle();} else if(shapeType.equalsIgnoreCase(RECTANGLE)){return new Rectangle();} else if(shapeType.equalsIgnoreCase(SQUARE)){return new Square();}return null;}
} 使用 public static void main(String[] args) {ShapeFactory shapeFactory new ShapeFactory();//获取 Circle 的对象并调用它的 draw 方法Shape shape1 shapeFactory.getShape(CIRCLE);//调用 Circle 的 draw 方法shape1.draw();//获取 Rectangle 的对象并调用它的 draw 方法Shape shape2 shapeFactory.getShape(RECTANGLE);//调用 Rectangle 的 draw 方法shape2.draw();//获取 Square 的对象并调用它的 draw 方法Shape shape3 shapeFactory.getShape(SQUARE);//调用 Square 的 draw 方法shape3.draw();
}