Chinese => English
『一只小蚂蚁』的专栏
困难无其数,从来不动摇。
BlogJava
|
首页
|
发新随笔
|
发新文章
|
联系
|
聚合
|
管理
随笔:135 文章:0 评论:228 引用:0
『蚂蚁学模式』之里氏代换原则(LSP)
7.2 what
一个软件实体如果使用的是一个基类的话,那么一定适用于其子类,而且它根本不能觉察出基类对象和子类对象的区别。
反之不成立。
7.3 在设计模式中的体现
策略模式
合成模式
代理模式
7.5
长方形和正方形
Rectangle类的源代码:
1
package
com.javapatterns.liskov.version1;
2
3
public
class
Rectangle
4
{
5
private
long
width;
6
private
long
height;
7
8
public
void
setWidth(
long
width)
9
{
10
this
.width
=
width;
11
}
12
public
long
getWidth()
13
{
14
return
this
.width;
15
}
16
public
void
setHeight(
long
height)
17
{
18
this
.height
=
height;
19
}
20
public
long
getHeight()
21
{
22
return
this
.height;
23
}
24
}
Square类的源代码:
1
package
com.javapatterns.liskov.version1;
2
3
public
class
Square
4
{
5
private
long
side;
6
7
public
void
setSide(
long
side)
8
{
9
this
.side
=
side;
10
}
11
12
public
long
getSide()
13
{
14
return
side;
15
}
16
}
正方形不可以作为长方形的子类
新的Square类的源代码:
1
package
com.javapatterns.liskov.version2;
2
3
public
class
Square
extends
Rectangle
4
{
5
private
long
side;
6
7
public
void
setWidth(
long
width)
8
{
9
setSide(width);
10
}
11
12
public
long
getWidth()
13
{
14
return
getSide();
15
}
16
17
public
void
setHeight(
long
height)
18
{
19
setSide(height);
20
}
21
22
public
long
getHeight()
23
{
24
return
getSide();
25
}
26
27
public
long
getSide()
28
{
29
return
side;
30
}
31
32
public
void
setSide(
long
side)
33
{
34
this
.side
=
side;
35
}
36
}
SmartTest类的源代码:
1
package
com.javapatterns.liskov.version2;
2
3
public
class
SmartTest
4
{
5
public
void
resize(Rectangle r)
6
{
7
while
(r.getHeight()
<=
r.getWidth() )
8
{
9
r.setWidth(r.getWidth()
+
1
);
10
}
11
}
12
13
/** */
/**
@link
dependency
*/
14
/**/
/*
#Rectangle lnkRectangle;
*/
15
}
代码的重构
Quadrangle类的源代码:
1
package
com.javapatterns.liskov.version3;
2
3
public
interface
Quadrangle
4
{
5
public
long
getWidth();
6
7
public
long
getHeight();
8
}
Rectangle类的源代码:
1
package
com.javapatterns.liskov.version3;
2
3
public
class
Rectangle
implements
Quadrangle
4
{
5
private
long
width;
6
private
long
height;
7
8
public
void
setWidth(
long
width)
9
{
10
this
.width
=
width;
11
}
12
public
long
getWidth()
13
{
14
return
this
.width;
15
}
16
public
void
setHeight(
long
height)
17
{
18
this
.height
=
height;
19
}
20
public
long
getHeight()
21
{
22
return
this
.height;
23
}
24
}
Square类的源代码:
1
package
com.javapatterns.liskov.version3;
2
3
public
class
Square
implements
Quadrangle
4
{
5
private
long
side;
6
7
public
void
setSide(
long
side)
8
{
9
this
.side
=
side;
10
}
11
12
public
long
getSide()
13
{
14
return
side;
15
}
16
17
public
long
getWidth()
18
{
19
return
getSide();
20
}
21
22
public
long
getHeight()
23
{
24
return
getSide();
25
}
26
}
发表于 2006-09-15 16:42
Thomas
阅读(218)
评论(0)
编辑
收藏
所属分类:
蚂蚁学模式
IT新闻
新用户注册
刷新评论列表
标题
姓名
主页
验证码
*
内容(请不要发表任何与政治相关的内容)
Remember Me?
登录
使用高级评论
新用户注册
返回页首
恢复上次提交
[使用Ctrl+Enter键可以直接提交]
相关文章:
『蚂蚁学模式』之实例化策略(Strategy)模式
『蚂蚁学模式』之实例化门面(Facade)模式
『蚂蚁学模式』之实例化代理(Proxy)模式
『蚂蚁学模式』之实例化装饰(Decorator)模式
『蚂蚁学模式』之实例化合成(Composite)模式
『蚂蚁学模式』之实例化缺省适配器(Default Adapter)模式
『蚂蚁学模式』之实例化适配器(Adapter)模式
『蚂蚁学模式』之实例化原型模式
『蚂蚁学模式』之实例化建造者模式
『蚂蚁学模式』之实例化单例模式(二)
相关链接:
网站导航:
博客园
BlogJava
博客生活
IT博客网
C++博客
PHP博客
博客园社区
管理博客
教师博客
天文博客
汽车博客
足球博客
股票博客
电子博客
管理
<
2006年9月
>
日
一
二
三
四
五
六
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
公告
Feedjit live traffic map
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
给我留言
查看公开留言
查看私人留言
随笔分类
(138)
Agile(3)
(rss)
AppFuse(1)
(rss)
Apusic OperaMasks(1)
(rss)
Books(1)
(rss)
Business & Finance(1)
(rss)
DDD(2)
(rss)
Design Patterns(1)
(rss)
Eclipse(4)
(rss)
EJB3.0
(rss)
Groovy & Grails
(rss)
Hibernate(3)
(rss)
Internet
(rss)
J2EE核心模式(2)
(rss)
Java ABC(4)
(rss)
Java EE(6)
(rss)
JavaScript & Ajax(2)
(rss)
JBoss Seam(5)
(rss)
JPA(1)
(rss)
JSF(2)
(rss)
Life(15)
(rss)
Open Source(3)
(rss)
Other(40)
(rss)
Portal(1)
(rss)
Pylons学习(3)
(rss)
Python(2)
(rss)
Security(2)
(rss)
Spring(3)
(rss)
TDD(3)
(rss)
Writing(1)
(rss)
一周阅读推荐(3)
(rss)
蚂蚁学模式(23)
(rss)
随笔档案
(135)
2007年11月 (9)
2007年10月 (5)
2007年9月 (10)
2007年8月 (13)
2007年7月 (8)
2007年6月 (7)
2007年5月 (10)
2007年4月 (10)
2007年3月 (4)
2007年2月 (5)
2007年1月 (12)
2006年12月 (13)
2006年11月 (7)
2006年10月 (2)
2006年9月 (15)
2006年8月 (4)
2006年7月 (1)
相册
Technology
收藏夹
(38)
Design Patterns(3)
(rss)
InfoQ(9)
(rss)
Java(1)
(rss)
JBoss Seam(6)
(rss)
My Articles(11)
(rss)
Reading(8)
(rss)
About me
my "douban" on douban
my "fanfou" on fanfou
my blog on baidu
my bookmarks on del.icio.us
my photos on picasaweb
Blogs
Anders小明的Blog
BlueDavy之技术Blog
Chris Richardson
gigix
Martin Fowler
Michael Yuan
robbin
梦想风暴
江南白衣
简单就是美!
胡长城(银狐999)BLOG
良葛格學習筆記
蛟龍居
键盘上的舞者
Classmates
碧涛居
Coworkers
一个基督徒的在世历程
English
BBC China
普特英语听力
Friends
BeanSoft
main()
刘玉辉
双鱼瓶
小献
曹江华
阿蜜果
Java
BlogJava
Blogs Summary
DevX: Java Zone
DZone
Huihoo
IBM developerWorks 中国
InfoQ
JAVA DEVELOPER'S JOURNAL
javablogs
JavaEye
javapassion.com
JavaWorld
Java站点
JBoss Seam中文站
JCP
Java Community Process
J道
Object Mentor Blog
ONJava
Raible Designs | Java
TSS
Open Source
appfuse
EasyJF
Java开源大全
JBoss Seam
OperaMasks.org
OSGi.org.cn
PicoContainer
projecttrack
Project Track - a JSF/Spring/Hibernate/Acegi example application
Redsaga
SpringSide
最新随笔
1. 【转载】你的时间在那里,成就就在那里
2. Seam能否取代Struts?
3. 【一周阅读推荐】2007.11.05—2007.11.11
4. 选择Seam的十大理由
5. 《JBoss Seam:一个深度集成框架》pdf文件下载
6. 在JBoss AS下部署Seam示例程序
7. 【翻译】Spring 2.5架构图
8. 【一周阅读推荐】2007.10.29—2007.11.04
9. JBoss Seam中文站发布
10. web2.0最全的国外API应用集合
11. 【一周阅读推荐】2007.10.22—2007.10.28
12. 记住,你的兜里只有100块!
13. 【转载】我最恐惧的事情是竞争力的丧失
14. 【翻译】RIA入门知识
15. 【翻译】比较NetBeans 6.0 M10和IntelliJ IDEA 7.0 M1
16. 【转载】Web2.0@China!
17. 【转载】正确地做事与做正确的事同样重要
18. 【转载】你必须要有一样拿得出手
19. 极限编程
20. 敏捷软件开发
搜索