当前位置:文档之家› 第4章_单件模式+工厂系列模式

第4章_单件模式+工厂系列模式


2015-6-30
19
一 、 一个实例
假设有三个笔芯,分别是红笔芯、蓝笔芯和 黑笔芯。用户希望通过圆珠笔来明确笔芯的颜色。
2015-6-30
20
二、工厂方法模式的结构与使用
模式的结构中包括四种角色: •抽象产品(Product) •具体产品(ConcreteProduct) •构造者(Creator) •具体构造者(ConcreteCreator)
2015-6-30
23
模式的结构的描述与使用
2.具体产品(ConcreteProduct)_1 : RedPenCore.java public class RedPenCore extends PenCore{ RedPenCore(){ color="红色"; } public void writeWord(String s){ System.out.println("写出"+color+"的字:"+s); } }
}
2015-6-30
30
模式的结构的描述与使用 5.应用 Application.java
public class Application{ public static void main(String args[]){ PenCore penCore; BallPen ballPen=new BlueBallPen(); penCore=ballPen.getPenCore(); penCore.writeWord("你好,很高兴认识你"); ballPen=new RedBallPen(); penCore=ballPen.getPenCore(); penCore.writeWord("How are you"); ballPen=new BlackBallPen(); penCore=ballPen.getPenCore(); penCore.writeWord("nice to meet you"); } }
2015-6-30
25
模式的结构的描述与使用
2.具体产品(ConcreteProduct)_3: BlackPenCore.java
public class BlackPenCore extends PenCore{ BlackPenCore(){ color="黑色"; } public void writeWord(String s){ System.out.println("写出"+color+"的字:"+s); } }
1.工厂(Creator)角色 简单工厂模式的核心,它负责实现创建所有实例的内部逻 辑。工厂类可以被外界直接调用,创建所需的产品对象。 2.抽象(Product)角色 简单工厂模式所创建的所有对象的父类,它负责描述所有 实例所共有的公共接口。
3.具体产品(Concrete Product)角色 简单工厂模式所创建的具体实例对象
} public String show(){
String s="月亮的半径是"+radius+"km,距地球是"+distanceToEarth+"km";
return s; }
}
2015-6-30
11
模式的结构的描述与使用
2.应用 Application.java import javax.swing.*; import java.awt.*; public class Application{ public static void main(String args[]){ MyFrame f1=new MyFrame("张三看月亮"); MyFrame f2=new MyFrame( "李四看月亮"); f1.setBounds(10,10,360,150); f2.setBounds(370,10,360,150); f1.validate(); f2.validate(); } }
2015-6-30
18
一 、 概述
当系统准备为用户提供某个类的子类的实例, 又不想让用户代码和该子类形成耦合时,就可以 使用工厂方法模式来设计系统。工厂方法模式的 关键是在一个接口或抽象类中定义一个抽象方法, 该方法返回某个类的子类的实例,该抽象类或接 口让其子类或实现该接口的类通过重写这个抽象 方法返回某个子类的实例。
模式设计 (JAVA)
商学院 信管专业教研室 韩 娜
电话: 661905 办公室: HG406
经典设计模式介绍
创建型模式
1.抽象工厂模式 2.工厂方法模式 3.单例模式 4.建造者模式 5.原型模式
结构型模式
行为型模式
1.适配器模式 2.外观模式 3.桥接模式 4.组合模式 5.装饰模式 6.享元模式 7.代理模式
集中了所有实例的创建逻辑,所以“高内聚”方面做的并 不好。另外,当系统中的具体产品类不断增多时,可能会 出现要求工厂类也要做相应的修改,扩展性并不很好。
工厂方法模式
工厂方法模式(别名:虚拟构造) 定义一个用于创建对象的接口,让子类决定实例化哪一个 类。Factory Method使一个类的实例化延迟到其子类。 Factory Method Pattern(Another Name: Virtual Constructor) Define an interface for creating an object, but let subclasses decide which class to instantiate. Factory Method lets a class defer instantiation to subclasses.
1.迭代器模式 2.观察者模式 3.策略模式 4.命令模式 5.职责链模式 6.解释器模式 7.中介者模式 8.备忘录模式 9.状态模式 10.模板方法模式 11.访问者模式
关于交通工具
1. 2.
3.
只给司机一辆车(单例、多例) 任意定制交通工具的类型和生产过程 系列产品(车、武器、食品补给……)
2015-6-30 12
模式的结构的描述与使用
2.应用 Application.java class MyFrame extends JFrame{ String str; MyFrame(String title){ setTitle(title); Moon moon=Moon.getMoon(); str=moon.show(); setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); setVisible(true); repaint(); } public void paint(Graphics g){ super.paint(g); g.setFont(new Font("宋体",Font.BOLD,14)); g.drawString(str,5,100); } }
2015-6-30
26

模式的结构的描述与使用
3.构造者(Creator):BallPen.java
public abstract class BallPen{ BallPen(){ System.out.println("生产了一只装有 "+getPenCore().color+"笔芯的圆珠 笔"); } public abstract PenCore getPenCore(); //工厂方法
Moveable
VihecleFactor y
Car
Plane
CarFactory
PlaneFactory
broom
BroomFactory
V
F
W
W2 1 V1 V2 F1 F2 W1
2
单件模式
单件模式 保证一个类仅有一个实例,并提供一个访问它 的全局访问点。 Prototype Pattern Ensure a class only has one instance, and provide a global point of access to it.
2015-6-30
}
10
模式的结构的描述与使用
1.单件类(Singleton): Moon.java
… public static synchronized Moon getMoon(){
if(uniqueMoon==null){
uniqueMoon=new Moon(); }
return uniqueMoon;
2015-6-30
28
模式的结构的描述与使用
4.具体构造者(ConcreteCreator): BlueBallPen.java public class BlueBallPen extends BallPen{ public PenCore getPenCore(){
return new BluePenCore();
13
2015-6-30
三、单件模式的优点
•单件类的唯一实例由单件类本身来控制,所以
可以很好地控制用户何时访问它。
2015-6-30
14
一、什么是简单工厂模式
简单工厂模式属于类的创建型模式,又叫做 静态工厂方法模式。通过专门定义一个类 来负责创建其他类的实例,被创建的实例 通常都具有共同的父类。
二、模式中包含的角色及其职责
2015-6-30
24
模式的结构的描述与使用
2.具体产品(ConcreteProduct)_2 : BluePenCore.java public class BluePenCore extends PenCore{ BluePenCore(){ color="蓝色"; } public void writeWord(String s){ System.out.println("写出"+color+"的字:"+s); } }
相关主题