工厂模式是最常用的一类创建型设计模式; 我们所说的工厂模式是指工厂方法模式,它也是使用频率最高的工厂模式
简单工厂模式是工厂方法模式的小弟; 它不属于GoF 23种设计模式,但是在软件开发中应用也颇为频繁,通常将它作为学习其它工厂模式的入门
首先简单工厂模式不属于GoF 23种经典设计模式,但通常将它作为学习其它工厂模式的基础,它的设计思想很简单,基本流程如下:
将需要创建各种不同对象的相关代码封装到不同的类中,这些类称为具体的产品类
将他们公共的代码进行抽象和提取后封装在一个抽象产品类中,每一个具体的产品类都是这个抽象产品类的子类
提供一个工厂类用于创建各种产品,在工厂类中提取一个创建产品的工厂方法,该方法可以根据传入的参数不同创建不同的具体产品对象
客户端只需要调用工厂类的工厂方法并传入相应的参数即可得到一个具体的产品对象
简单工厂模式又称为静态工厂模式,这个模式数据创建式模式; 在简单工厂模式中,根据传入的参数,返回不同类的实例
简单工厂模式包含如下角色:
工厂角色负责实现创建所有实例的内部逻辑
抽象产品角色是所创建的所有对象的父类,负责描述所有实例所共有的公共接口
具体产品角色是创建目标,所有创建的对象都充当这个角色的某个具体类的实例
简单工厂模式主要用来解决 创建实例 的问题
具体代码如下:
public abstract class CashSuper {
public abstract int acceptCash(int money);
}
public class CashNormal extends CashSuper {
@Override
public int acceptCash(int money) {
return money;
}
}
public class CashRebate extends CashSuper {
private int moneyRate = 0;
public CashRebate(int moneyRate) {
this.moneyRate = moneyRate;
}
@Override
public int acceptCash(int money) {
return money * this.moneyRate;
}
}
public class CashFactory {
public static CashSuper getCash(int cashOption) {
CashSuper cashSuper = null;
switch (cashOption) {
case 1 :
cashSuper = new CashNormal();
break;
case 2 :
cashSuper = new CashRebate(2);
break;
default:
break;
}
return cashSuper;
}
}
public class CashClient {
public static void main(String[] args) throws InterruptedException {
System.out.println("请选择结算方式:");
System.out.println("1 --- 原价");
System.out.println("2 --- 2倍的价格");
CashSuper cashSuper = null;
Scanner scanner = new Scanner(System.in);
switch(scanner.next()) {
case "1" :
cashSuper = CashFactory.getCash(1);
System.out.println(cashSuper.acceptCash(100));
break;
case "2" :
cashSuper = CashFactory.getCash(2);
System.out.println(cashSuper.acceptCash(100));
break;
}
}
}
单一职责原则,就一个类而言,应该仅有一个引起它变化的原因
开放封闭原则,是说软件实体(类、模块、函数等)可以扩展,但是不可修改
高层模块不应该依赖底层模块 抽象不应该依赖细节,细节应该依赖抽象
子类型必须能够替换掉它们的父类型
工厂内含有必要的判断逻辑,可以决定在什么时候创建哪一个产品类的实例,客户端可以免除直接创建产品对象的责任,而仅仅“消费”产品; 简单工厂模式通过这种做法实现了对责任的分割,它提供了专门的工厂类用于创建对象
客户端无须知道所创建的具体产品类的类名,只需要知道具体产品类所对应的参数即可; 对于一些复杂的类名,通过简单工厂模式可以减少使用者的记忆量
通过引入配置文件,可以在不修改任何客户端代码的情况下更换和增加新的具体产品类,在一定程度上提高了系统的灵活性
由于工厂类集中了所有产品创建逻辑,一旦不能正常工作,整个系统都要受到影响; 使用简单工厂模式将会增加系统中类的个数,在一定程序上增加了系统的复杂度和理解难度
系统扩展困难; 一旦添加新产品就不得不修改工厂逻辑,在产品类型较多时,有可能造成工厂逻辑过于复杂,不利于系统的扩展和维护
简单工厂模式由于使用了静态工厂方法,造成工厂角色无法形成基于继承的等级结构
以上就是简单工厂模式的相关内容,此外,作为开发人员为用户带去操作流畅丝滑的APP,是漫长职业生涯当中的终极目标
好了,文章基本上就到这里,简单工厂模式已经分析完毕了!,如有地方不对或者有不同理解的可以提出来
有需要更多Android资讯的同学 可以 私信 发送 “笔记” 或 “进阶” 即可 免费获取
现在私信还可以获得 更多《Android 学习笔记+源码解析+面试视频》
最后我想说:
对于程序员来说,要学习的知识内容、技术有太多太多,要想不被环境淘汰就只有不断提升自己,从来都是我们去适应环境,而不是环境来适应我们
技术是无止境的,你需要对自己提交的每一行代码、使用的每一个工具负责,不断挖掘其底层原理,才能使自己的技术升华到更高的层面
Android 架构师之路还很漫长,与君共勉
留言与评论(共有 0 条评论) “” |