设计模式-工厂模式
来源:互联网 发布:vc 多线程编程 编辑:程序博客网 时间:2024/06/05 17:49
我们在平时的编程过程中,不可避免的需要创建对象,通过工厂方法可以简化类的创建过程,并提高代码的复用性。所谓的设计模式,都是人们在平时
的编程过程中,不断优化的产物,通过这些简单的设计模式可以提高编程效率。
静态工厂模式
作为一个储户,我们都需要一张银行卡,因此我们需要一个发卡单位----就是银行。假想存在一个统一的制卡单位(中国银行),由于我们每个用户需要
的卡不一样,比如农业银行、招商银行、民生银行。。。那么我们需要给制卡单位传递一个参数,然后制卡单位根据参数返回我们需要的卡。
//工厂public class BankCardSimpleFactory { public static BankCard getCard(String cardType){ if("abc".equals(cardType)){ return new ABCBankCard(); }else if("ICBC".equals(cardType)){ return new ICBCBankCard(); } //依次类推 return null; }}
随着不断发展,卡的种类越来越多,每增加一个卡种类,都需要修改工厂类,这样不满足开闭原则,因此出现了下面的简单工厂模式
简单工厂模式
现在我们可以将BankCardSimpleFactory当做工厂父类,将不同的卡交给对应的工厂子类实现。
public interface BasicBankCardFactory { BankCard getBankCard();}
public class ICBCBankCardFactory implements BasicBankCardFactory{ public BankCard getBankCard(){ return new ICBCBankCard(); } }
public class ABCBankCardFactory implements BasicBankCardFactory{ public BankCard getBankCard(){ return new ABCBankCard(); }}现在不同的卡由不同的子类工厂生产,当我们需要增加其他卡时,只需要添加一个对应的Card(implements BankCard),然后创建一个新的工厂类(implements BasicBankCardFactory)即可满足我们的需求。
Mybatis中创建DataSource数据源就使用了简单工厂模式
首先定义了一个DataSourceFactory接口,通过getDataSource()方法获取DataSource对象
public interface DataSourceFactory { void setProperties(Properties props); DataSource getDataSource();}然后他又根据mybatis中DataSource(UnPooledDataSource、PooledDataSource、JNDIDataSource)的不同,定义了三种相对应的DataSourceFactory工厂类
(UnPooledDataSourceFactory、UnPooledDataSourceFactory、JNDIDataSourceFactory)
public class UnpooledDataSourceFactory implements DataSourceFactory { private static final String DRIVER_PROPERTY_PREFIX = "driver."; private static final int DRIVER_PROPERTY_PREFIX_LENGTH = DRIVER_PROPERTY_PREFIX.length(); protected DataSource dataSource; public UnpooledDataSourceFactory() { this.dataSource = new UnpooledDataSource(); } @Override public DataSource getDataSource() { return dataSource; }}
阅读全文
0 0
- 设计模式------工厂模式
- 设计模式------工厂模式
- 设计模式 [ 工厂模式 ]
- 设计模式--工厂模式
- 设计模式-工厂模式
- 设计模式--工厂模式
- 设计模式 工厂模式
- 设计模式-工厂模式
- 设计模式 -- 工厂模式
- 设计模式-工厂模式
- 设计模式----工厂模式
- 设计模式---工厂模式
- 设计模式-工厂模式
- 设计模式--工厂模式
- 设计模式---工厂模式
- 设计模式-工厂模式
- 设计模式--工厂模式
- 设计模式 - 工厂模式
- EventBus使用详解(一)——初步使用EventBus
- 常用分析日志shell命令
- 字符串相关的高频面试题
- synchronize和volatile含义,使用
- Validate US Telephone Numbers
- 设计模式-工厂模式
- 170626 逆向-Crackme之005
- debian安装apache2成功之后,在web请求显示的文档 翻译
- VMware虚拟网卡
- SICP-2.2-String
- LeetCode 66. Plus One
- Linux下为文件增加列的shell脚本
- 论文《Recurrent Convolutional Neural Networks for Text Classification》总结
- 将自己的时间戳转换为几分钟前,几小时前,几天前