AbstractFactoryPattern(抽象工厂)
/**
* 抽象工厂模式
* 分为四部分
* 1.产品接口
* 2.产品实例
* 3.工厂接口(生产同一个产品的不同等级,这里是主要区别)
* 4.工厂实例
* 工厂类最好用单例模式,但在这里主要是说明工厂方法,就不用单例了
* 与工厂方法不同的地方是,可以生产不同等级的产品
* @author TMAC-J
*
*/
public class FactoryMethodPattern {
/**
* 产品
*
*/
interface IProduct{
void doSomething();
} public class ConcreteProduct1 implements IProduct{ public ConcreteProduct1() {}//等级为1 public ConcreteProduct1(String a) {}//等级为2 @Override
public void doSomething() {
System.out.println("concreteProduct do something!");
}
} public class ConcreteProduct2 implements IProduct{ public ConcreteProduct2() {}//等级为1 public ConcreteProduct2(String a) {}//等级为2 @Override
public void doSomething() {
System.out.println("concreteProduct2 do something!");
}
} interface IFactory{
IProduct createGrade1();//创建等级为1的产品
IProduct createGrade2(String a);//创建等级为2的产品
} public class ConcreteFactory1 implements IFactory{
@Override
public IProduct createGrade1() {
IProduct product = new ConcreteProduct1();
return product;
} @Override
public IProduct createGrade2(String a) {
IProduct product = new ConcreteProduct1(a);
return product;
}
} public class ConcreteFactory2 implements IFactory{
@Override
public IProduct createGrade1() {
IProduct product = new ConcreteProduct2();
return product;
} @Override
public IProduct createGrade2(String a) {
IProduct product = new ConcreteProduct2(a);
return product;
}
} public void test(){
IFactory concreteFactory1 = new ConcreteFactory1();
concreteFactory1.createGrade1();//生产等级1产品1
concreteFactory1.createGrade2("a");//生产等级1产品1
IFactory concreteFactory2 = new ConcreteFactory2();
concreteFactory2.createGrade1();//生产等级1产品1
concreteFactory2.createGrade2("a");//生产等级2产品1
} }
AbstractFactoryPattern(抽象工厂)的更多相关文章
- AbstractFactoryPattern(抽象工厂模式)-----Java/.Net
抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂.该超级工厂又称为其他工厂的工厂.
- 设计模式之:抽象工厂模式AbstractFactoryPattern的实现
相比于工厂模式,抽象工厂模式的每个工厂可以创建产品系列,而不是一个产品: 抽象工厂用到的技术:接口.多态.配置文件.反射: 抽象工厂模式的设计原则: 实现客户端创建产品和使用产品的分离,客户端无须了解 ...
- 设计模式——抽象工厂模式(AbstractFactoryPattern)
抽象工厂模式(AbstractFactory):提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类. UML图: IFactory: package com.cnblog.clarck ...
- 设计模式之美:Abstract Factory(抽象工厂)
索引 别名 意图 结构 参与者 适用性 缺点 效果 相关模式 命名约定 实现 实现方式(一):使用 Factory Method 来实现 Abstract Factory. 实现方式(二):使用 Pr ...
- 六个创建模式之抽象工厂模式(Abstract Factory Pattern)
问题: 使用工厂方法模式的主要问题是工厂类过多,每个产品对应一个工厂,不利于维护.因此可以考虑使用一个工厂创建一个产品族. 定义: 提供创建一些列相关或相互依赖的对象实例的接口,这些类可以称为一个产品 ...
- 抽象工厂模式(Abstract Factory)
(二)抽象工厂模式(Abstract Factory) 1.抽象工厂模式(Abstract Factory),提供了一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类. 2.抽象工厂模式是 ...
- 抽象工厂模式(Java与Kotlin版)
前文推送 设计模式 简单工厂模式(Java与Kotlin版) 工厂方法模式(Java与Kotlin版) Kotlin基础知识 Kotlin入门第一课:从对比Java开始 Kotlin入门第二课:集合操 ...
- 面向对象设计——抽象工厂(Abstract Factory)模式
定义 提供一个创建一系列相关或者相互依赖对象的接口,而无需指定它们具体的类.抽象工厂允许客户使用抽象的接口来创建一组相关的产品,而不需要知道或关心实际产出的具体产品是什么.这样一来,客户就能从具体的产 ...
- 使用C# (.NET Core) 实现抽象工厂设计模式 (Abstract Pattern)
本文的概念性内容来自深入浅出设计模式一书. 上一篇文章讲了简单工厂和工厂方法设计模式 http://www.cnblogs.com/cgzl/p/8760250.html, 使用的是披萨店的例子. 文 ...
随机推荐
- java spring 邮件发送
开发中经常会遇到发送邮件进行用户验证,或者其它推送信息的情况,本文基于spring,完成邮件的发送,主要支持普通文本邮件的发送,html文本邮件的发送,带附件的邮件发送,没有实现群发.多个附件发送等需 ...
- IDEA设置代码大小以及菜单栏大小
IntelliJ IDEA设置菜单栏大小的方法:File --Settings --Appearance & Behavior -- Appearance ,右边Override defaul ...
- 导入一些常用命令比如(rz),关闭防火墙外面可以访问
yum -y install lrzsz-----------导入常用命令 我在虚拟机上面启动了一个项目 这个原因是防火墙造成的,关闭防火墙 iptables -L 查看下 service ipt ...
- JAVA基础-输入输出:1.编写TextRw.java的Java应用程序,程序完成的功能是:首先向TextRw.txt中写入自己的学号和姓名,读取TextRw.txt中信息并将其显示在屏幕上。
1.编写TextRw.java的Java应用程序,程序完成的功能是:首先向TextRw.txt中写入自己的学号和姓名,读取TextRw.txt中信息并将其显示在屏幕上. package Test03; ...
- Leetcode-463 Island Perimeter
#463. Island Perimeter You are given a map in form of a two-dimensional integer grid where 1 represe ...
- 使用 fixed role 授予权限
今天下午,Leader 发mail给我,要求授予某个User对数据库只读的权限. Step1,在SQL Server中为该用户创建一个Login和User,在创建User时,建立Login 和 Use ...
- Javascript算法系列之快速排序(Quicksort)
原文出自: http://www.nczonline.net/blog/2012/11/27/computer-science-in-javascript-quicksort/ https://gis ...
- jQuery源码分析系列(34) : Ajax - 预处理jsonp
上一章大概讲了前置过滤器和请求分发器的作用,这一章主要是具体分析每种对应的处理方式 $.ajax()调用不同类型的响应,被传递到成功处理函数之前,会经过不同种类的预处理(prefilters). 预处 ...
- A Simple OpenGL Shader Example II
A Simple OpenGL Shader Example II eryar@163.com Abstract. The OpenGL Shading Language syntax comes f ...
- easyui中方向键、tab键、回车键
1.html中 function changeTab(event, i) { var keyCode = event.keyCode; var inputs = jQuery("#table ...