I want to fly higher
programming Explorer
BlogJava
首页
新随笔
新文章
联系
聚合
管理
posts - 114,comments - 263,trackbacks - 0
<
2016年11月
>
日
一
二
三
四
五
六
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
8
9
10
常用链接
我的随笔
我的文章
我的评论
我的参与
最新评论
留言簿
(5)
给我留言
查看公开留言
查看私人留言
随笔分类
(161)
Book(25)
ClassLoader(5)
Concurrency
Dababase
GameServer(10)
HighPerformance
HotSwap(9)
IO
JVM(6)
Language(2)
Mobile
NetWork(2)
NoSQL
Note(8)
OS(6)
Program(69)
Script(1)
ServerFramework(6)
Shell
Sources(8)
Translations
Utils(4)
随笔档案
(114)
2018年6月 (1)
2018年3月 (1)
2017年3月 (2)
2017年2月 (2)
2017年1月 (1)
2016年11月 (2)
2016年7月 (4)
2016年6月 (3)
2016年5月 (2)
2015年12月 (2)
2015年10月 (1)
2015年8月 (1)
2015年7月 (4)
2015年6月 (5)
2014年12月 (1)
2014年11月 (4)
2014年4月 (1)
2014年3月 (3)
2014年2月 (5)
2014年1月 (1)
2013年12月 (7)
2013年11月 (4)
2013年8月 (5)
2013年7月 (3)
2013年3月 (6)
2013年1月 (6)
2012年7月 (1)
2011年12月 (9)
2011年8月 (2)
2011年5月 (1)
2011年2月 (2)
2011年1月 (1)
2010年12月 (2)
2010年11月 (1)
2010年7月 (8)
2010年4月 (3)
2010年3月 (3)
2010年2月 (2)
2010年1月 (2)
文章分类
(2)
学习笔记(2)
文章档案
(2)
2011年12月 (2)
Alibaba
搜索技术博客-淘宝
淘宝开源项目
阿里中间件团队博客
阿里技术嘉年华
阿里核心系统团队博客
Comprehensive
InfoQ - 促进软件开发领域知识与创新的传播
LinkedIn
stackoverflow
伯乐在线
内存-溢出 为程序员服务
腾讯大讲堂
解道
Expert
jrebel
国外牛博
并发编程高手
庄周梦蝶
洞庭散人
美团技术博客
褚霸
Game
云风
Java
JavaEye做最棒的软件开发交流社区
coderanch
IBM developerWorks 中国 Java 技术专区
Java Tutorials
Javalobby
javapapers
java-source
java-tips
javaworld
Java极客
Java译站
Programming Tutorial
TheServerSide
专注Java & Android 技术分享
并发编程网
搜索
积分与排名
积分 - 597472
排名 - 78
最新评论
1. re: Eclipse反编译工具Jad及插件JadClipse配置
刚刚问题解决了,file types中, .class下还有一个 .class without source。
把这个也设置成JadClipse为默认选项打开嘛,即可。
谢谢版主~~~
--tangyuan
2. re: Eclipse反编译工具Jad及插件JadClipse配置
eclipse4.6版本,按照上述来的不行,版主还有推荐的反编工具嘛,推荐一个呢
--tangyuan
3. re: 交换两个值,不用临时变量(C位运算)[未登录]
评论内容较长,点击标题查看
--123
4. re: Markdown基础语法及发布blog
确实很基础的语法,很容易就学会了!
--有机绿茶
5. re: Java8之Stream/Map[未登录]
总结的很详细!
--jay
阅读排行榜
1. Eclipse反编译工具Jad及插件JadClipse配置(134317)
2. Unknown Source的出现及解决(39314)
3. MMORPG服务器架构(33410)
4. Java8之Stream/Map(24519)
5. 浅谈Eclipse dropins插件安装的"坑"(附m2e的各个版本插件下载)(19589)
oop-模式-架构设计基础(一)
示例切入(鸭子游戏)
游戏中会有各种鸭子,一边游泳,一边咕咕叫
设计了一个鸭子的抽象基类,并让各种鸭子继承此基类
如果让
鸭子飞
,怎么办?
问题
并非所有的鸭子都能飞,在基类中增加fly会导致所有的子类都具备fly,连那些不该具备fly的子类也无法排除
非常粗暴的解决办法就是每个子类都要仔细判断是否要覆写相关逻辑,比如不会飞的鸭子那么覆写fly方法,什么事情都不做即可;如果遇到不是咕咕叫的鸭子,则覆写quack方法
继承的缺点
代码在多个子类中重复
很难知道所有鸭子的全部行为
运行时的行为不容易改变
改变会牵一发动全身
每当新增新的鸭子子类,需要被迫检查并可能需要覆盖fly和quack方法--噩梦啊
使用接口
把fly从基类中抽出来,放进一个Flyable接口,只有会飞的鸭子才实现此接口;同样的方式,设计一个Quackable接口,因为并非所有鸭子都会叫
问题
解决了一部分问题,不会再有“会飞的橡皮鸭(继承方式)”
但无法进行代码复用-如后续几十个能飞的鸭子的飞行逻辑一致,不但每一个子类都需要写一遍(大量重复的代码)而且如果修改飞行逻辑的话,则需要全部都修改一遍
归零
使用继承不能很好的解决问题,鸭子的行为在子类不断的改变并且让所有的子类都有这些行为是不恰当的
使用Flyable和Quackable接口解决了一部分问题,只有会飞的鸭子才会实现Flyable.但是Java接口不具有实现代码,所有实现接口无法达到达到代码的复用
设计原则
找出应用中可能需要变化之处,把他们独立出来,不要和那些不需要变化的代码混在一起
把变化的部分取出并封装起来,以便以后可轻易的改动或扩充此部分而不影响不需要变化的的其他部分
分开变化和不会变化的部分
面向接口编程,而不是面向实现编程
飞行行为和咕咕叫行为已经和鸭子类无关了
整合
最终版本
多用组合,少用继承
S.O.L.I.D 面向对象设计五大基本原则
S-单一职责原则
一个类应该只有一项工作
如计算类只负责计算,而不负责展示,展示需要交由单独的展示类进行处理
O-开放封闭原则
对扩展开放,对修改关闭
一个类无需修改类本身却容易扩展
如计算类中的计算图形面积方法大量的if/else,增加图形要增加大量的if/else-改由图形本身去计算
L-里氏替换原则
每一个子类或派生类应该可以替换它们基类或父类
I-接口隔离原则
不应强迫客户端实现一个它用不上的接口,或是说客户端不应该被迫依赖它们不使用的方法
D-依赖反转原则
依靠抽象而不是具体实现。它表示高层次的模块不应该依赖于低层次的模块,它们都应该依赖于抽象
面向模式的软件架构
架构模式
Layers/Pipes and Filters/Blackboard/Microkernel/BrokerMVC/PACReflection
Whole-Part/Master-Slave/Proxy/Command Processor/View Handler/Forwarder-Receiver/Client-Dispatcher-Server/publisher-subscriber/
Reactor/Proactor/Acceptor-Connector/Aysnchronous Completion Token/Active Object/Thread-Speific Storage
Loopup/Lazy Acquisition/Caching/Pooling/Resouce Lifecycle Manager/
设计模式
The 23 Gang of Four Design Patterns
Creational Patterns
Abstract Factory/Builder/Factory Method/Prototype/Singleton
Structural Patterns
Adapter/Bridge/Composite/Decorator/Facade/Flyweight/Proxy
Behavioral Patterns
Chain of Resp/Command/Interpreter/Iterator/Mediator/Memento/Observer/State/Strategy/Template/Visitor
成例
特定语言的,如引用计数(CounterPointer)
抽象、封装、信息隐藏、模块化、分离关注点、耦合与内聚、充分-完整-简单、策略与实现分离、接口与实现分离、单个引用点、分而治之
landon:抽象(个人认为写代码最高境界就是抽象)、解耦、开闭
JDK源代码浅析
经典的集合框架
ref
《Head First Design Patterns》
《Pattern-Oriented Software Architecture》
posted on 2016-11-04 11:31
landon
阅读(2431)
评论(0)
编辑
收藏
所属分类:
ServerFramework
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理
相关文章:
一个入门rpc框架的学习
Java游戏服务器基础技术体系
oop-模式-架构设计基础(一)
《大型网站系统与Java中间件实践》读书笔记
Disruptor入门Ⅰ-Getting Started
Vertx VS Undertow Ⅰ