工厂模式
参考内容:工厂模式
-
简单工厂模
定义一个工厂类,根据传入的参数不同创建不同的实例
package factoryPattern.simple; public interface Shape{ void draw(); }package factoryPattern.simple; // 画圆类 public class CircleShape implements Shape{ @Override public void draw() { System.out.println("开始画圆"); } }package factoryPattern.simple; public class RectShape implements Shape{ @Override public void draw() { System.out.println("绘制矩形"); } }package factoryPattern.simple; public class TangleShape implements Shape{ @Override public void draw() { System.out.println("绘制三角形"); } }package factoryPattern.simple; public class ShapeFactory{ public static final String TAG ="ShapeFactory"; public static Shape getShape(String type){ if(type.equals("circle")){ return new CircleShape(); } else if(type.equals("rect")){ return new RectShape(); } else{ return new TangleShape(); } } }package factoryPattern.simple; public class Test { public static void main(String[] args) { Shape rectShape = ShapeFactory.getShape("rect"); rectShape.draw(); Shape circleShape = ShapeFactory.getShape("circle"); circleShape.draw(); Shape tangleShape = ShapeFactory.getShape("tangle"); tangleShape.draw(); } } -
工厂方法模式
每个对象都有一个与之对应的工厂

package factoryPattern.factoryMethod; public interface Read { void read(); }package factoryPattern.factoryMethod; public class PngRead implements Read{ @Override public void read() { System.out.println("读取Png格式图片"); } }package factoryPattern.factoryMethod; public class JpgRead implements Read{ @Override public void read() { System.out.println("读取Jpg图片"); } }package factoryPattern.factoryMethod; public interface ReadFactory { Read getRead(); }package factoryPattern.factoryMethod; public class GifGetReadFactory implements ReadFactory{ @Override public Read getRead() { return new GifRead(); } }package factoryPattern.factoryMethod; public class PngGetReadFactory implements ReadFactory{ @Override public Read getRead() { return new PngRead(); } }package factoryPattern.factoryMethod; public class JpgGetReadFactory implements ReadFactory{ @Override public Read getRead() { return new JpgRead(); } }package factoryPattern.factoryMethod; public class Test { public static void main(String[] args) { ReadFactory jpgread = new JpgGetReadFactory(); Read jRead =jpgread.getRead(); jRead.read(); ReadFactory pngread =new PngGetReadFactory(); Read pRead =pngread.getRead(); pRead.read(); ReadFactory gifread =new GifGetReadFactory(); Read gRead =gifread.getRead(); gRead.read(); } } -
抽象工厂模式
提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类

package factoryPattern.abstractFactory; public interface operationController { void control(); }package factoryPattern.abstractFactory; public interface UiController { void display(); }package factoryPattern.abstractFactory; public class AndoridOperationFactroy implements operationController{ @Override public void control() { System.out.println("Andorid平台操作"); } }package factoryPattern.abstractFactory; public class AndoridUIController implements UiController{ @Override public void display() { System.out.println("Andorid界面"); } }package factoryPattern.abstractFactory; public class iosOperationFactory implements operationController{ @Override public void control() { System.out.println("ios平台操作"); } }package factoryPattern.abstractFactory; public class iosUIController implements UiController{ @Override public void display() { System.out.println("ios界面"); } }package factoryPattern.abstractFactory; public class WpOperationFactroy implements operationController{ @Override public void control() { System.out.println("window平台操作"); } }package factoryPattern.abstractFactory; public class WpUIController implements UiController{ @Override public void display() { System.out.println("window界面"); } }package factoryPattern.abstractFactory; public class WpUIController implements UiController{ @Override public void display() { System.out.println("window界面"); } }package factoryPattern.abstractFactory; public interface SystemFactory { public operationController cOperationController(); public UiController cUiController(); }package factoryPattern.abstractFactory; public class AndoridFactory implements SystemFactory{ @Override public operationController cOperationController() { return new AndoridOperationFactroy(); } @Override public UiController cUiController() { return new AndoridUIController(); } }package factoryPattern.abstractFactory; public class iosFactory implements SystemFactory{ @Override public operationController cOperationController() { return new iosOperationFactory(); } @Override public UiController cUiController() { return new iosUIController(); } }package factoryPattern.abstractFactory; public class WpFactor implements SystemFactory{ @Override public operationController cOperationController() { return new WpOperationFactroy(); } @Override public UiController cUiController() { return new iosUIController(); } }package factoryPattern.abstractFactory; public class AndoridFactory implements SystemFactory{ @Override public operationController cOperationController() { return new AndoridOperationFactroy(); } @Override public UiController cUiController() { return new AndoridUIController(); } }package factoryPattern.abstractFactory; public class iosFactory implements SystemFactory{ @Override public operationController cOperationController() { return new iosOperationFactory(); } @Override public UiController cUiController() { return new iosUIController(); } }package factoryPattern.abstractFactory; public class WpFactor implements SystemFactory{ @Override public operationController cOperationController() { return new WpOperationFactroy(); } @Override public UiController cUiController() { return new iosUIController(); } }package factoryPattern.abstractFactory; public class Test { public static void main(String[] args) { SystemFactory systemFactory; UiController uiController; operationController operationcontroller; systemFactory = new AndoridFactory(); uiController = systemFactory.cUiController(); operationcontroller= systemFactory.cOperationController(); uiController.display(); operationcontroller.control(); } }
本文深入解析了工厂模式的三种形式:简单工厂模式、工厂方法模式和抽象工厂模式。通过具体示例,展示了如何使用这些模式来创建和管理不同类型的对象,提高了代码的灵活性和可维护性。

被折叠的 条评论
为什么被折叠?



