今天,开始看设计模型,看的是 <深入浅出 设计模式(C#/Java版) > 莫勇腾著,清华大学版
首先是创造型设计模式:
1.Simple Factory Pattern (简单工厂模式)
一个手机工厂的源代码:
public interface Mobile{
public void call();
}
//
手机抽象类
public interface Mobile ... {
public void call();
}
// 诺基亚类
public class Nokia implements Mobile ... {
public void call()...{
System.out.println("一部Nokia手机生成了");
}
}
// 摩托罗拉
public class Motorola implements Mobile ... {
public void call()...{
System.out.println("一部Motorola手机生成了");
}
}
// 产生两种手机实例的手机工厂
public class MobileFactory ... {
public Mobile getMobile(String title) throws Exception...{
if(title.equalsIgnoreCase("nokia"))...{
return new Nokia();
}
else if(title.equalsIgnoreCase("motorola"))...{
return new Motorola();
}
else ...{
throw new Exception("No such " + title + " mobile found");
}
}
}
// 客户使用类
public class SimpleFactoryClient ... {
static public void main(String args[])...{
try...{
MobileFactory mf = new MobileFactory();
Mobile m;
m = mf.getMobile("nokia");
m.call();
m = mf.getMobile("motorola");
m.call();
}
catch(Exception e)...{
e.printStackTrace();
}
}
}
public interface Mobile ... {
public void call();
}
// 诺基亚类
public class Nokia implements Mobile ... {
public void call()...{
System.out.println("一部Nokia手机生成了");
}
}
// 摩托罗拉
public class Motorola implements Mobile ... {
public void call()...{
System.out.println("一部Motorola手机生成了");
}
}
// 产生两种手机实例的手机工厂
public class MobileFactory ... {
public Mobile getMobile(String title) throws Exception...{
if(title.equalsIgnoreCase("nokia"))...{
return new Nokia();
}
else if(title.equalsIgnoreCase("motorola"))...{
return new Motorola();
}
else ...{
throw new Exception("No such " + title + " mobile found");
}
}
}
// 客户使用类
public class SimpleFactoryClient ... {
static public void main(String args[])...{
try...{
MobileFactory mf = new MobileFactory();
Mobile m;
m = mf.getMobile("nokia");
m.call();
m = mf.getMobile("motorola");
m.call();
}
catch(Exception e)...{
e.printStackTrace();
}
}
}
一个简单的例子,但是说明了问题.