常用的设计模式----工厂模式
2017-06-13 17:36
513 查看
工厂模式:
作用:实例化对象,代替new操作
应用场景:以选择脸萌选择【发型】和【面部特征为例】
有一组类似的对象(发型),需要在不同的业务场景中动态的创建(客户端选择不同的发型);
随着业务的发展,很难在设计初期就准备好所有种类的接口(发型车间)和实例对象(中分,左分);
考虑到系统的扩展性(增加面部特征)和易维护性(修改,增加发型),这时候应该使用工厂方法模式。
优点:
一个对象的依赖对象发生变化,与本身无关,实现了低耦合
客户端与具体的业务分离,也是实现了低耦合
工厂方法模式:
相当于工厂里的生产车间,真正做事儿的部门
具体实现步骤:
步骤1:创建接口和实现类
接口:
public interface HairInterface { public void draw(); }
实现类:
public class RightHair implements HairInterface { @Override public void draw() { // TODO Auto-generated method stub System.out.println("-----------------右偏分发型-------------------"); }
public class LeftHair implements HairInterface { @Override public void draw() { // TODO Auto-generated method stub System.out.println("-----------------左偏分发型-------------------"); }
public class InHair implements HairInterface { @Override public void draw() { // TODO Auto-generated method stub System.out.println("-----------------中分发型-------------------"); }
步骤2:创建.properties文件,编辑key和value值
key1=value1 key2=value2 key3=value3 例如: left=com.sunny.project.LeftHair right=com.sunny.project.RightHair in=com.sunny.project.InHair
步骤3:创建【方法工厂】
public class HairFactory { /** * 根据key值生产对象 * @param className * @return *// public HairInterface getHairByClassKey(String key){ try { //以键值对的格式获取.properties里的值。/ Map<String, String> map = new PropertiesReader().getProperties(); //通过类名获取相应的实例对象(利用反制机制,实现面向对象的多态特性)。/ HairInterface hair = (HairInterface) Class.forName(map.get(key)).newInstance(); return hair; } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } return null; } }
步骤4:用【方法工厂】创建实例对象,并使用对应方法
HairFactory factory = new HairFactory(); HairInterface hair1 = factory.getHairByClassKey("in"); HairInterface hair2 = factory.getHairByClassKey("left"); HairInterface hair3 = factory.getHairByClassKey("right"); hair1.draw(); hair2.draw(); hair3.draw();
抽象工厂模式:
相当于工厂里的指挥部门,为生产车间下达指令
工厂方法模式与抽象工厂模式的区别
如下图所示
相关文章推荐
- Symbian常用设计模式之可伸缩对象工厂
- j2ee常用的设计模式?说明工厂模式
- PHP最常用的2种设计模式工厂模式和单例模式
- 常用设计模式举例,观察者模式,装饰模式,工厂模式,单列模式---Head Frist 设计模式源码
- JAVA常用设计模式(2)工厂模式
- 常用设计模式(三)——工厂设计模式
- 11种常用设计模式之工厂模式
- iOS常用设计模式——简单工厂设计模式
- 六种常用的设计模式java实现(一)工厂模式
- 常用设计模式总结--抽象工厂
- iOS常用设计模式——工厂方法(简单工厂模式,工厂方法模式, 抽象工厂模式)
- JAVA常用设计模式总结(单例,工厂,抽象工厂)
- Android 内功心法(1.2)——android常用设计模式之工厂模式
- .NET常用设计模式——工厂模式
- Java常用设计模式之工厂模式(Factory)
- 常用设计模式之简单工厂模式
- 编程常用设计模式详解--(上篇)(工厂、单例、建造者、原型)
- JavaScript 常用的设计模式之工厂模式
- PHP常用的设计模式--工厂、单例模式
- Symbian常用设计模式之可伸缩对象工厂