Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Snowleopard_wu
Java
提交
43d47225
J
Java
项目概览
Snowleopard_wu
/
Java
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
J
Java
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
43d47225
编写于
5月 15, 2019
作者:
A
Abhijay Kumar
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Added Factory Design pattern implementation in Java and its test
上级
4a3f8712
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
137 addition
and
0 deletion
+137
-0
src/main/java/com/designpatterns/factorypattern/Pentagon.java
...main/java/com/designpatterns/factorypattern/Pentagon.java
+13
-0
src/main/java/com/designpatterns/factorypattern/Polygon.java
src/main/java/com/designpatterns/factorypattern/Polygon.java
+20
-0
src/main/java/com/designpatterns/factorypattern/PolygonFactory.java
...ava/com/designpatterns/factorypattern/PolygonFactory.java
+32
-0
src/main/java/com/designpatterns/factorypattern/Square.java
src/main/java/com/designpatterns/factorypattern/Square.java
+14
-0
src/main/java/com/designpatterns/factorypattern/Triangle.java
...main/java/com/designpatterns/factorypattern/Triangle.java
+13
-0
src/test/java/com/designpatterns/factorypattern/PolygonFactoryTest.java
...com/designpatterns/factorypattern/PolygonFactoryTest.java
+45
-0
未找到文件。
src/main/java/com/designpatterns/factorypattern/Pentagon.java
0 → 100644
浏览文件 @
43d47225
package
src.main.java.com.designpatterns.factorypattern
;
public
class
Pentagon
implements
Polygon
{
@Override
public
String
getType
()
{
return
"Pentagon"
;
}
@Override
public
double
area
(
double
side
)
{
return
3.847104
*
side
*
side
;
}
}
src/main/java/com/designpatterns/factorypattern/Polygon.java
0 → 100644
浏览文件 @
43d47225
package
src.main.java.com.designpatterns.factorypattern
;
public
interface
Polygon
{
/**
* Should be overriden to describe the type of each polygon
*
* @return a String value describing the name of the polygon
*/
String
getType
();
/**
* Calculates the area of the regular polygon
*
* @param side The length of the side of regular polygon
* @return area of the polygon
*/
double
area
(
double
side
);
}
src/main/java/com/designpatterns/factorypattern/PolygonFactory.java
0 → 100644
浏览文件 @
43d47225
package
src.main.java.com.designpatterns.factorypattern
;
/**
* In class-based programming, the factory method pattern is a creational pattern that uses factory methods to deal
* with the problem of creating objects without having to specify the exact class of the object that will be created.
* This is done by creating objects by calling a factory method—either specified in an interface and implemented by
* child classes, or implemented in a base class and optionally overridden by derived classes—rather than by calling
* a constructor.
*
* @see <a href="https://en.wikipedia.org/wiki/Factory_method_pattern">Factory Pattern</a>
*/
public
class
PolygonFactory
{
/**
* Factory pattern implementation for the Polygon Interface to return the correct regular polygon object
* depending on the number of sides it has.
*
* @param numberOfSides in the polygon to initialize.
* @return the object having the respective number of sides
*/
public
Polygon
getPolygon
(
int
numberOfSides
)
{
switch
(
numberOfSides
)
{
case
3
:
return
new
Triangle
();
case
4
:
return
new
Square
();
case
5
:
return
new
Pentagon
();
default
:
return
null
;
}
}
}
src/main/java/com/designpatterns/factorypattern/Square.java
0 → 100644
浏览文件 @
43d47225
package
src.main.java.com.designpatterns.factorypattern
;
public
class
Square
implements
Polygon
{
@Override
public
String
getType
()
{
return
"Square"
;
}
@Override
public
double
area
(
double
side
)
{
return
side
*
side
;
}
}
src/main/java/com/designpatterns/factorypattern/Triangle.java
0 → 100644
浏览文件 @
43d47225
package
src.main.java.com.designpatterns.factorypattern
;
public
class
Triangle
implements
Polygon
{
@Override
public
String
getType
()
{
return
"Triangle"
;
}
@Override
public
double
area
(
double
side
)
{
return
0.433013
*
side
*
side
;
}
}
src/test/java/com/designpatterns/factorypattern/PolygonFactoryTest.java
0 → 100644
浏览文件 @
43d47225
package
src.test.java.com.designpatterns.factorypattern
;
import
org.junit.Assert
;
import
org.junit.Test
;
import
src.main.java.com.designpatterns.factorypattern.Polygon
;
import
src.main.java.com.designpatterns.factorypattern.PolygonFactory
;
public
class
PolygonFactoryTest
{
@Test
public
void
testPolygonFactory
()
{
String
failReason
=
""
;
PolygonFactory
polFactory
=
new
PolygonFactory
();
//Test for triangle
Polygon
triangle
=
polFactory
.
getPolygon
(
3
);
if
(!
triangle
.
getType
().
equals
(
"Triangle"
))
{
failReason
+=
"Polygon Factory failed for Triangle."
;
}
if
(
triangle
.
area
(
4
)
!=
6.928208
)
{
failReason
+=
"Triangle area is incorrect!"
;
}
//Test for square
Polygon
square
=
polFactory
.
getPolygon
(
4
);
if
(!
square
.
getType
().
equals
(
"Square"
))
{
failReason
+=
"Polygon Factory failed for Square."
;
}
if
(
square
.
area
(
5
)
!=
25
)
{
failReason
+=
"Square area is incorrect!"
;
}
//Test for pentagon
Polygon
pentagon
=
polFactory
.
getPolygon
(
5
);
if
(!
pentagon
.
getType
().
equals
(
"Pentagon"
))
{
failReason
+=
"Polygon Factory failed for Pentagon."
;
}
if
(
pentagon
.
area
(
9
)
!=
311.615424
)
{
failReason
+=
"Pentagon area is incorrect!"
;
}
Assert
.
assertEquals
(
failReason
,
failReason
,
""
);
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录