被老大问起来看了多少书,很不好意思告诉他我基本没怎么看技术方面的书,惭愧,他又一次跟我提起了《研磨设计模式》这本书,说他当时看的时候感悟非常深,而我很早以前就把它买到手了,可是根本没有看多少,实在惭愧,所以昨天决定安下心来,好好看一本书,因为这本书还不错,所以不管占用多少时间,看了总会有所长进,总比整天抱怨没有实践机会没有成长强。
把读书笔记和自己领悟到的东西写在这里,就当是对看书的总结了。本人非专业人士,全凭自己理解写读书笔记,不喜勿喷,请多多指教。
什么是设计模式?
设计模式是为了解决某个场景下的特定问题的解决方案,它的特点是:1,解决特定场景下的问题;2,这种问题会重复出现;3,设计模式是经过验证的。听起来更像是很高深的东西,用来在不同的应用场景下设计不同的程序方案,从而能够更加方便地解决问题。
书中第一个设计模式,入门的设计模式:简单工厂模
顾名思义,这个设计模式是工厂,是用来创造东西的,首先来看一个实际的例子
public interface Api {
public void test(String s);
}
public class Impl implements Api {
public void test(String s) {
System.out.println("Say:"+s);
}
}
public class Client {
public static void main(String[] args) {
Api api = new Impl();
api.test("Hello world");
}
}
上边这个例子,在客户端调用Impl这个实现类。问题在于,虽说是面向接口编程,但在Client客户端,它调用了Impl这个类,已经暴露了一些实现,因为客户端知道了以下的行为时Impl这个类的具体行为。下面用简单工厂模式进行结构设计。
public class Factory {
public static Api create() {
Api api = new Impl();
return api;
}
}
public class Factory {
public static Api create(int condition) {
Api api = null;
if(condition == 1) {
api = new ImplA();
}else if() {
api = new ImplB();
}
return api;
}
}
public class Client {
public static void main(String[] args) {
Api api = Factory.create(1);
api.test('Hello world');
}
}
第一个Factory类是只有一个实现类时的简单工厂类,第二个Factory是有多个实现类时的简单工厂类
这样在Client客户端进行接口调用的时候就可以相对好得隐藏掉了一些具体的实现类,最起码隐藏了实现类名。。。但要做到让客户端知道该调用哪个接口,就不得不把1,2等参数代表的意义告诉客户端让其调用
所以,简单工厂模式只是一个简单的引入设计模式概念的模式,并不是太强大
总结下,简单工厂模式能够稍微隐藏下具体的实现,完了