回答:关于如何看这本书,我认为要有一定的 Java 开发经验 + 基础扎实 + 做笔记 +重复读+ 实践,其中 重复读 和 实践 要不断循环进行,之后会对这本书的理解越来越深刻。 参考书目:《Java编程思想》(第四版) 友链:【读书笔记】Java重要知识点整理与汇总 start.作者讲授思路: (声明:由于本章很多接口的内容都是必备的基础,然而对于设计模式的几个代码示例写的很有代表性,让我有整理下来的冲动,因此,本文虽名为接口章节,实则为三种设计模式的例子)。 创建一个能够根据所传递的参数对象的不同而具有不同行为的方法,被称为策略设计模式。这类方法包含所要执行的算法中固定不变的部分,而策略包含变化的部分。策略就是传递进去的参数对象,它包含要执行的代码,本例中,Processor对象就是一个策略,在main()中有三种不同类型的策略应用到了String类型的s对象上。 用到了代理。 在工厂对象上调用的是创建方法,而该工厂对象将直接生成接口的某个实现的对象。通过这种方式,我们的代码将完全与接口的实现分离。如果不是工厂方法,我们就必须指定要创建的Service的确切类型,以便调用合适的构造器。 我们通过添加这种额外级别的间接性,可以用于创建框架。 任何抽象性都应该是应真正的需求而产生的。 优先选择类而不是接口,从类开始,如果接口的必需性变得非常明确,那么就进行重构。 接口是一种重要的工具,但容易被滥用。阅读《Java编程思想》(第四版)一书收获颇多,之所以想通过用博客记笔记的方式来读书,是因为这样可以倒逼自己仔细、反复地阅读书中的知识,找相对意义上的重点,并且由于人脑更适合输出型的学习,通过将内容边看、边记、边理解和边打字写文,相比直接反复阅读更有效益(当然这本书后续仍需反复阅读几十遍甚至百遍以上都不为过),而另一个原因就是这样也能够在阅读中通过博客来记录自己的学习历程,博客记录的不只是图文,它们记录的正是自己的成长,等以后毕业或者工作后,回首大学四年,多少有点可以回念的东西,还可以说一句:一路走来,我读了很多前辈们的好书,对技术充满了热情,永远在不断学习的路上。
一、策略设计模式
import java.util.Arrays;
class Processor {
public String name() {
return getClass().getSimpleName();
}
Object process(Object input) {
return input;
}
}
class Upcase extends Processor {
String process(Object input) {
return ((String)input).toUpperCase();
}
}
class Downcase extends Processor {
String process(Object input) {
return ((String)input).toLowerCase();
}
}
class Splitter extends Processor {
String process(Object input) {
return Arrays.toString(((String)input).split(" "));
}
}
public class Apply {
public static void process(Processor p, Object s) {
System.out.println("Using Process " + p.name());
System.out.println(p.process(s));
}
public static String s = "hhh";
public static void main(String[] args) {
process(new Upcase(), s);
process(new Downcase(), s);
process(new Splitter(), s);
}
}
二、适配器设计模式
//class LowPass extends Filter{}
//class HighPass extends Filter{}
//...
class FilterAdapter implements Processor {
Filter filter;
public FilterAdapter(Filter filter) {
this.filter = filter;
}
public String name() { return filter.name(); }
public Waveform process(Object input) {
return filer.process((Waveform)input);
}
}
三、工厂方法设计模式
interface Service {
void method();
}
interface Factory {
Service getService();
}
class AService implements Service {
public void method() {
System.out.println("AService method1");
}
}
class BService implements Service {
public void method() {
System.out.println("BService method1");
}
}
class AFactory implements Factory {
public Service getService() {
return new AService();
}
}
class BFactory implements Factory {
public Service getService() {
return new BService();
}
}
public class Factories {
public static void serviceConsumer(Factory fact) {
Service s = fact.getService();
s.method();
}
public static void main(String[] args) {
serviceConsumer(new AFactory());
serviceConsumer(new BFactory());
}
}
忠告:
声明:本文部分素材转载自互联网,如有侵权立即删除 。
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
8. 精力有限,不少源码未能详细测试(解密),不能分辨部分源码是病毒还是误报,所以没有进行任何修改,大家使用前请进行甄别
丞旭猿论坛
暂无评论内容