java设计模式(创建型)之抽象工厂模式
来源:互联网 发布:苏宁易购 抢券软件 编辑:程序博客网 时间:2024/05/14 01:59
第0章:简介
抽象工厂模式定义:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们的具体类。
抽象工厂模式的实质:选择产品簇的实现
参考:http://chjavach.iteye.com/blog/792907,研磨设计模式(书籍),大话设计模式(书籍)
模式图:
待补充第1章:实践
(1)1系产品接口(Intf1.java)
package com.mcc.core.designPattern.build.abstractFactory;/**
* 1系产品接口
*
* @author <a href="mailto:417877417@qq.com">menergy</a>
* DateTime: 14-3-9 上午11:43
*/
public interface Intf1 {
public void someMethod();
}
(2)1系A类产品类(Intf1Impl1.java)
package com.mcc.core.designPattern.build.abstractFactory;
/**
* 1系A类产品
*
* @author <a href="mailto:417877417@qq.com">menergy</a>
* DateTime: 14-3-9 上午11:45
*/
public class Intf1ImplA implements Intf1 {
@Override
public void someMethod() {
System.out.println("1系A类产品");
}
}
(3)1系B类产品类(Intf1ImplB.java)package com.mcc.core.designPattern.build.abstractFactory;
/**
* 1系B类产品
*
* @author <a href="mailto:417877417@qq.com">menergy</a>
* DateTime: 14-3-9 上午11:47
*/
public class Intf1ImplB implements Intf1 {
@Override
public void someMethod() {
System.out.println("1系B类产品");
}
}
(4)2系产品接口(Intf2.java)
package com.mcc.core.designPattern.build.abstractFactory;/**
* 2系产品接口
*
* @author <a href="mailto:417877417@qq.com">menergy</a>
* DateTime: 14-3-9 上午11:44
*/
public interface Intf2 {
public void someMethod();
}
(5)2系A类产品类(Intf2ImplA.java)
package com.mcc.core.designPattern.build.abstractFactory;/**
* 2系A类产品
*
* @author <a href="mailto:417877417@qq.com">menergy</a>
* DateTime: 14-3-9 上午11:48
*/
public class Intf2ImplA implements Intf2 {
@Override
public void someMethod() {
System.out.println("2系A类产品");
}
}
(6)2系B类产品类(Intf2ImplB.java)
package com.mcc.core.designPattern.build.abstractFactory;/**
* 2系B类产品
*
* @author <a href="mailto:417877417@qq.com">menergy</a>
* DateTime: 14-3-9 上午11:49
*/
public class Intf2ImplB implements Intf2 {
@Override
public void someMethod() {
System.out.println("2系B类产品");
}
}
(7)抽象工厂接口类(AbstractFactory.java)
package com.mcc.core.designPattern.build.abstractFactory;/**
* 抽象工厂
* 控制产品生产,即A类工厂不能生产出B类的产品,B类的工厂不能生产出A类的商品
* 目标产品:1系搭配2系,不跨类搭配,即不能A、B类混搭
*
* 抽象工厂模式的定义:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们的具体类。
* 抽象工厂模式的本质:选择产品簇的实现
*
* @author <a href="mailto:417877417@qq.com">menergy</a>
* DateTime: 14-3-9 上午11:51
*/
public interface AbstractFactory {
//1系产品生产
public Intf1 create1();
//2系产品生产
public Intf2 create2();
}
(8)A类产品工厂类(FactoryA.java)
package com.mcc.core.designPattern.build.abstractFactory;/**
* A类产品工厂
*
* @author <a href="mailto:417877417@qq.com">menergy</a>
* DateTime: 14-3-9 下午12:05
*/
public class FactoryA implements AbstractFactory {
/**
* 1系A类产品生产
* @return
*/
@Override
public Intf1 create1() {
return new Intf1ImplA();
}
/**
* 2系A类产品生产
* @return
*/
@Override
public Intf2 create2() {
return new Intf2ImplA();
}
}
(9)B类产品工厂类(FactoryB.java)
package com.mcc.core.designPattern.build.abstractFactory;/**
* B类产品工厂
*
* @author <a href="mailto:417877417@qq.com">menergy</a>
* DateTime: 14-3-9 下午12:07
*/
public class FactoryB implements AbstractFactory {
/**
* 1系B类产品生产
* @return
*/
@Override
public Intf1 create1() {
return new Intf1ImplB();
}
/**
* 2系B类产品生产
* @return
*/
@Override
public Intf2 create2() {
return new Intf2ImplB();
}
}
(10)客户端测试类(Client.java)
package com.mcc.core.designPattern.build.abstractFactory;/**
* 客户端测试
*
* @author <a href="mailto:417877417@qq.com">menergy</a>
* DateTime: 14-3-9 下午12:10
*/
public class Client {
public static void main(String args[]){
System.out.println("A类产品生产:");
//A类产品工厂
AbstractFactory abstractFactoryA = new FactoryA();
//A类产品工厂生产1系产品
Intf1 intf1ImplA = abstractFactoryA.create1();
intf1ImplA.someMethod();
//A类产品工厂生产2系产品
Intf2 intf2ImplA = abstractFactoryA.create2();
intf2ImplA.someMethod();
System.out.println("B类产品生产:");
//B类产品工厂
AbstractFactory abstractFactoryB = new FactoryB();
//B类产品工厂生产1系产品
Intf1 intf1ImplB = abstractFactoryB.create1();
intf1ImplB.someMethod();
//B类产品工厂生产2系产品
Intf2 intf2ImplB = abstractFactoryB.create2();
intf2ImplB.someMethod();
}
}
0 0
- java设计模式(创建型)之抽象工厂模式
- java设计模式之创建型模式-抽象工厂模式
- 创建型:设计模式之抽象工厂模式(二)
- Java设计模式之创建型模式-抽象工厂模式(Abstract Factory)
- java 设计模式-创建模式之抽象工厂模式
- java设计模式 -------- 创建模式 之 抽象工厂模式
- Java设计模式之创建型模式--工厂方法及抽象工厂模式
- JAVA设计模式学习之----创建模式:工厂模式(抽象工厂)
- java设计模式之创建型模式-抽象工厂(AbstractFactory)
- "围观"设计模式(8)--创建型之简单工厂模式、工厂方法模式、抽象工厂模式
- "围观"设计模式(8)--创建型之简单工厂模式、工厂方法模式、抽象工厂模式
- Java 设计模式之抽象工厂模式的详解(创建模式)
- 设计模式-抽象工厂模式(创建型模式)
- 设计模式-创建型模式之 Abstract Factory(抽象工厂)
- 创建型设计模式之抽象工厂(Abstract Factory)模式
- 设计模式-创建型之抽象工厂模式
- 【设计模式】创建型模式之抽象工厂Abstract Factory
- 创建型设计模式之抽象工厂方法模式
- OpenWRT UCI API的使用
- java.jse--IO--Java NIO与IO的区别和比较
- 9. Java 对Json的解析
- 解决装了Ubuntu耳机没有声音的问题(外放有声音)
- 给APK 文件签名
- java设计模式(创建型)之抽象工厂模式
- AJAX post get
- 噜噜的android唠叨一
- MAC中编程使用的软件---个人偏好
- 动态规划——数组中最长递减子序列
- 质数(或素数)(多种方法)
- 本地git管理代码
- [cocos2dx 3.0 (三)] 中文支持显示 + 自制ScrollLabel类
- http://www.google.com.hk/patents/US8566217