标签:new t cas article 多个 添加 产品 UI print color
四、创建者模式
1.摩托车组装系统
认为这些样例挺适合入门的,easy理解,
看了之后大概是个什么样子的就有了印象。
摩托车 = 车架 + 车轮 + 轮胎 + 发动机。
首先设计摩托车类以及各零件类:
摩托车类:
public interface Motorcycle
{
void build();
}
public class Motorcycle1 implements Motorcycle
{
void build(){ Sysout.out.println("组装摩托车開始..."); }
}
下面是摩托车零件类:
摩托车架类:
public interface Carcase
{
void build();
}
public class Carcase1 implements Carcase
{
void build(){ Sysout.out.println("组装摩托车架開始..."); }
}
车轮类:
public interface Wheel
{
void build();
}
public class Wheel1 implements Wheel
{
void build(){ Sysout.out.println("组装摩托车轮開始..."); }
}
轮胎类:
public interface Tyre
{
void build();
}
public class Tyre1 implements Tyre
{
void build(){ Sysout.out.println("组装摩托轮胎開始..."); }
}
发动机类:
public interface Engine
{
void build();
}
public class Engine1 implements Engine
{
void build(){ Sysout.out.println("组装发动机開始..."); }
}
然后设计一个仅仅负责定义创建方式的抽象工厂类:
public interface Factory
{
Carcase createCarcase();//创建车架对象
Wheel createWheel();//创建车轮对象
Tyre createTyre();//创建轮胎对象
Engine createEngine();//创建发动机对象
}
public class MotorcycleFactory implements Factory
{
publci Carcase createCarcase(){
return new Carcase1();
}
Wheel createWheel(){
return new Wheel1();
};
Tyre createTyre(){
return new Tyre1();
};
Engine createEngine(){
return new Engine1();
};
}
用工厂方法模式和抽象工厂模式结合设计。代码例如以下:
public class Client
{
public static void main(String[] args)
{
Factory factory = new MotorcycleFactory();
Carcase carcase = factory.createCarcase();
carcase.build();
Wheel wheel = factory.createWhee();
wheel.build();
Tyre tyre = factory.createTyre();
tyre.build();
Engine engine = factory.CreateEngine();
engine.build();
//对摩托车零件进行组装
return new Motorcycle1();
}
}
这样子功能是实现了,可是感觉比較怪。存在一些问题:
摩托车零件比較多,client组装比較麻烦,假设把摩托车的组装放在
工厂里。那么工厂类也非常麻烦。
解决的方法:
继续划分职责,添加一个单独的类来负责摩托车的组装。
添加一个组装类来负责产品的组装,工厂类仅仅负责创建,
client直接调用组装类。
添加的组装类:
public class Director
{
private Factory factory;
public void Director(Factory factory){
this.factory = factory;
}
public Motorcycle assembleMotorcycle(){
Carcase carcase = factory.createCarcase();
carcase.build();
Wheel wheel = factory.createWhee();
wheel.build();
Tyre tyre = factory.createTyre();
tyre.build();
Engine engine = factory.CreateEngine();
engine.build();
//对摩托车零件进行组装
return new Motorcycle1();
}
}
这样client调用就简单了:
public class Client
{
public static void main(String[] args){
Directorr director = new Director( new MotorcycleFactory() );
Motorcycle motorcycle = director.assembleMotorcycle();
}
}
2.创建者模式简单介绍
【定义】:
创建者模式就是将一个复杂对象的创建与它的表示分离,
是的相同的构建过程能够创建不同的表示。client不须要
知道对象的创建细节。
【原理】
创建者模式主要由5部分组成:
组装类、抽象创建者类 以及详细创建者类、抽象产品类 以及详细产品类。
【使用时机】
当系统须要创建一个复杂的对象。并且这个复杂的对象组装起来比較麻烦时。
能够使用创建者模式。
3.优缺点
【长处】
在创建者类中。client不再负责对象的创建和组装,而是把这个创建的责任交给
详细的创建者类。吧组装的工作交给详细的组装类。client仅仅负责对象的调用。
明白了各个类的职责。
【缺点】
尽管利用创建者模式能够创建出不同类型的产品,但假设产品之间的差异过大。则
须要编写多个创建者类才干实现,这是假设结合工厂模式更好。
标签:new t cas article 多个 添加 产品 UI print color
原文地址:http://www.cnblogs.com/cynchanpin/p/6816550.html