简单工厂模式
简单工厂模式并不属于GoF 23个经典设计模式,但通常将它作为学习其他工厂模式的基础。
定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建实例通常都具有共同的父类。简单工厂模式中用于创建实例的方法是静态方法,因此简单工厂模式又被称为静态工厂方法模式,它属于类创建型模式。
//抽象产品角色 abstract class Product { //所有产品类的公共业务方法 public void methodSame() { } //声明抽象业务方法 public abstract void methodDiff(); } //具体产品角色 class ConcreteProduct extends Product { //实现业务方法 public void methodDiff() { } } //工厂角色 class Factory { //静态工厂方法 public static Product getProduct(String arg) { Product product = null; if (arg.equalsIgnoreCase("A")) { product = new ConcreteProductA(); } else if (arg.equalsIgnoreCase("B")) { product = new ConcreteProductB(); } return product; } }
工厂方法模式
简单工厂模式虽然简单,但存在一个很严重的问题。当系统中需要引入新产品时,由于静态工厂方法通过所传入参数的不同来创建不同的产品,这必定要修改工厂类的源代码,将违背“开闭原则”。
定义一个用于创建对象的接口,让子类决定将哪一个类实例化。工厂方法模式让一个类的实例化延迟到其子类。又简称为工厂模式或多态工厂模式。
//日志记录器接口:抽象产品 interface Logger { public void writeLog(); } //数据库日志记录器:具体产品 class DatabaseLogger implements Logger { public void writeLog() { System.out.println("数据库日志记录。"); } } //文件日志记录器:具体产品 class FileLogger implements Logger { public void writeLog() { System.out.println("文件日志记录。"); } } //日志记录器工厂接口:抽象工厂 interface LoggerFactory { public Logger createLogger(); } //数据库日志记录器工厂类:具体工厂 class DatabaseLoggerFactory implements LoggerFactory { public Logger createLogger() { //连接数据库,代码省略 //创建数据库日志记录器对象 //初始化数据库日志记录器,代码省略 Logger logger = new DatabaseLogger(); return logger; } } //文件日志记录器工厂类:具体工厂 class FileLoggerFactory implements LoggerFactory { public Logger createLogger() { //创建文件日志记录器对象 Logger logger = new FileLogger(); //创建文件,代码省略 return logger; } }
抽象工厂模式
工厂方法模式由于的每个工厂只生产一类产品,可能会导致系统中存在大量的工厂类,势必会增加系统的开销。抽象工厂模式中的具体工厂不只是创建一种产品,它负责创建一族产品。
提供一个创建一系列相关或相互依赖对象的接口, 而无须指定它们具体的类。
interface Button { public void display(); } class SpringButton implements Button { public void display() { System.out.println("显示浅绿色按钮。"); } } //Summer按钮类:具体产品 class SummerButton implements Button { public void display() { System.out.println("显示浅蓝色按钮。"); } } //文本框接口:抽象产品 interface TextField { public void display(); } //Spring文本框类:具体产品 class SpringTextField implements TextField { public void display() { System.out.println("显示绿色边框文本框。"); } } //Summer文本框类:具体产品 class SummerTextField implements TextField { public void display() { System.out.println("显示蓝色边框文本框。"); } } //组合框接口:抽象产品 interface ComboBox { public void display(); } //Spring组合框类:具体产品 class SpringComboBox implements ComboBox { public void display() { System.out.println("显示绿色边框组合框。"); } } //Summer组合框类:具体产品 class SummerComboBox implements ComboBox { public void display() { System.out.println("显示蓝色边框组合框。"); } } //界面皮肤工厂接口:抽象工厂 interface SkinFactory { public Button createButton(); public TextField createTextField(); public ComboBox createComboBox(); } //Spring皮肤工厂:具体工厂 class SpringSkinFactory implements SkinFactory { public Button createButton() { return new SpringButton(); } public TextField createTextField() { return new SpringTextField(); } public ComboBox createComboBox() { return new SpringComboBox(); } } //Summer皮肤工厂:具体工厂 class SummerSkinFactory implements SkinFactory { public Button createButton() { return new SummerButton(); } public TextField createTextField() { return new SummerTextField(); } public ComboBox createComboBox() { return new SummerComboBox(); } }
泛型工厂
interface IOHandler { } class Dummy { public static <T extends IOHandler> T getIOHandler(Class<T> clz) { IOHandler handler = null; try { handler = (IOHandler) Class.forName(clz.getName()).newInstance(); } catch (Exception e) { e.printStackTrace(); } return (T) handler; } }
参考:刘伟设计模式
相关推荐
3. Qt工厂模式工程 4. Qt工厂模式例程 5. Qt工厂模式例子 6. 简单工厂模式 部分源码实例: // 奔驰工厂 class BenzFactory : public AFactory { public: ICar* CreateCar() { return new BenzCar(); } }; // ...
JAVA设计模式(01):创建型-工厂模式【简单工厂模式】(Simple Factory)
介绍的是工厂模式 包括简单工厂模式、工厂方法模式、抽象工厂模式 包括PPT和代码
进入凯立德 工程模式 的方法 在“查找”菜单中切换到“123”输入法,输入*147#即可进入工程模式
导航进入工厂模式的方法,修改导航高级管理。
乐华板卡 进工程模式方法!!!
本文章通俗易懂的对工厂模式进行了讲解,相信您看完这篇文章会对工厂模式有更深入的了解
测试机型:32m3095(其它机型未试,大同小异,自行测试) 测试时间:2022.06.15 进入酒店模式好处:可以设置...进入工厂模式好处:可以设置不正常的颜色,声音。恢复系统默认设置。好多功能,是英文的,我看不懂。
JAVA 设计模式: 工厂模式 代理模式 迭代模式 责任链模式 源码
简单工程模式,一旦要添加一个子类的时候,就要去人工手动的修改工厂类里面的函数。但是在工厂模式里面,我们只需要再添加一个工厂就好了。上传的简单的计算器就是用工厂模式做的,相对比较简单。
从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂...
深入浅出设计模式之抽象工厂模式+工厂方法模式+策略模式实现手机加工厂(加类图)
工厂方法模式和抽象工厂模式的区别,对工厂方法模式和抽象工厂模式做了简单的比较
java设计模式 抽象工厂模式详解 一张图让你彻底明白抽象工厂模式
java设计模式 简单工厂模式uml类图,一张图就让你秒懂简单工厂模式
通过C++实现了简单工厂模式、工厂模式、抽象工厂模式三大设计模式的经典案例。
各机芯进入工厂模式汇总 电视怎样进入工厂模式.PDF
单例模式和工厂模式结合应用,实现了产品的生产,适合用做课程设计,包含详细文档和代码。Java语言。喜欢的可以下载来看看那
针对工厂模式的三个类别(简单工厂模式、工厂方法模式、抽象工厂模式)分别实现获取数据库连接并进行DML操作 .
设计模式-抽象工厂模式(讲解及其实现代码)