抽象工厂模式
2015-06-24 11:32
344 查看
抽象工厂模式
抽象工厂模式是将一个简单东西变为复杂的东西,但是这样的可以方便以后的扩展,实现开闭原则,需要扩展只需要增加代码,不需要需改以前的代码。
抽象工厂类:负责加工产品的工厂,下面还有具体的工厂类
抽象产品类:一个产品的总称 。下面还有具体实现产品类
具体实现类:相当于客户端的调用。
以手机为例:
抽象工厂:
相当于一个手机总产,负责接收订单
public interface IFactory {
MB create();
}
工厂的具体实现类:
三星手机:
public class UnderSanXingFactory implements IFactory{
}
小米手机:
public class UnderXiaoMiFactory implements IFactory{
}
每个工厂负责生产具体的手机,以后扩展只需要实现抽象工厂类,即可!
抽象具体类:
相当于一个手机的总称呼:
public class ShouJi{
}
手机具体的分类:
三星:
public class SanXing extends ShouJi{
public void createShouji(){
System.out.println(“SanXing”);
}
}
小米
public class XiaoMi extends ShouJi{
public void createShouji(){
System.out.println(“XiaoMi”);
}
}
要增加一个手机,只要继承手机类即可!!
客户端的调用:
public class FactoryMain {
public static void main(String[] args) {
// 调用生产三星手机
IFactory factory = new UndeSanxingFactory();
SanXing sanXing= (SanXing) factory.create();
sanXing.create();
// 调用生产小米手机
IFactory iFactory = new UnderXiaoMiFactory();
XiaoMi xiaoMi= (XiaoMi) iFactory.create();
xiaoMi.createShouJi();
}
}
这样既可以完成一个抽象工厂!
抽象工厂模式是将一个简单东西变为复杂的东西,但是这样的可以方便以后的扩展,实现开闭原则,需要扩展只需要增加代码,不需要需改以前的代码。
抽象工厂类:负责加工产品的工厂,下面还有具体的工厂类
抽象产品类:一个产品的总称 。下面还有具体实现产品类
具体实现类:相当于客户端的调用。
以手机为例:
抽象工厂:
相当于一个手机总产,负责接收订单
public interface IFactory {
MB create();
}
工厂的具体实现类:
三星手机:
public class UnderSanXingFactory implements IFactory{
@Override public ShouJi create() { // TODO Auto-generated method stub return new Sanxing(); }
}
小米手机:
public class UnderXiaoMiFactory implements IFactory{
@Override public ShouJi create() { // TODO Auto-generated method stub return new XiaoMi(); }
}
每个工厂负责生产具体的手机,以后扩展只需要实现抽象工厂类,即可!
抽象具体类:
相当于一个手机的总称呼:
public class ShouJi{
public ShouJi() { // TODO Auto-generated constructor stub }
}
手机具体的分类:
三星:
public class SanXing extends ShouJi{
public void createShouji(){
System.out.println(“SanXing”);
}
}
小米
public class XiaoMi extends ShouJi{
public void createShouji(){
System.out.println(“XiaoMi”);
}
}
要增加一个手机,只要继承手机类即可!!
客户端的调用:
public class FactoryMain {
public static void main(String[] args) {
// 调用生产三星手机
IFactory factory = new UndeSanxingFactory();
SanXing sanXing= (SanXing) factory.create();
sanXing.create();
// 调用生产小米手机
IFactory iFactory = new UnderXiaoMiFactory();
XiaoMi xiaoMi= (XiaoMi) iFactory.create();
xiaoMi.createShouJi();
}
}
这样既可以完成一个抽象工厂!
相关文章推荐
- 介绍php设计模式中的工厂模式
- asp.net 简单工厂模式和工厂方法模式之论述
- 深入理解JavaScript系列(28):设计模式之工厂模式详解
- javascript 模式设计之工厂模式详细说明
- python中getattr函数使用方法 getattr实现工厂模式
- 工厂模式在Zend Framework中应用介绍
- 浅析php工厂模式
- C++设计模式之抽象工厂模式
- C++设计模式之简单工厂模式实例
- c#使用简单工厂模式实现生成html文件的封装类分享
- PHP高级对象构建 工厂模式的使用
- 一个ASP创建动态对象的工厂类(类似PHP的stdClass)
- 基于php设计模式中工厂模式详细介绍
- PHP 面向对象程序设计(oop)学习笔记(三) - 单例模式和工厂模式
- C++设计模式之工厂方法模式
- JavaScript设计模式之工厂模式和构造器模式
- Java设计模式之工厂模式(Factory模式)介绍
- JavaScript设计模式之工厂模式和构造器模式
- 设计模式学习整理(一)
- java反射机制+工厂模式+配置文件----->在谈到spring配置文件