f2.validate(); } }
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(\宋体\ g.drawString(str,5,100); } }
———————————————————————————————————————
工厂方法模式(别名:虚拟构造)
定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使一个类的实例化延迟到其子类。
模式的结构中包括四种角色: 抽象产品(Product)
具体产品(ConcreteProduct) 构造者(Creator)
具体构造者(ConcreteCreator)
1.抽象产品(Product) : PenCore.java public abstract class PenCore{ String color;
public abstract void writeWord(String s); }
2.具体产品(ConcreteProduct)_1 : RedPenCore.java public class RedPenCore extends PenCore{ RedPenCore(){ color=\红色\ }
public void writeWord(String s){
System.out.println(\写出\的字:\ } }
3.构造者(Creator):BallPen.java public abstract class BallPen{ BallPen(){
System.out.println(\生产了一只装有\笔芯的圆珠笔\ }
public abstract PenCore getPenCore(); //工厂方法 }
4.具体构造者(ConcreteCreator): RedBallPen.java
public class RedBallPen extends BallPen{
public PenCore getPenCore(){ return new RedPenCore(); } }
BlueBallPen.java
public class BlueBallPen extends BallPen{ public PenCore getPenCore(){ return new BluePenCore(); } }
BlackBallPen.java
public class BlackBallPen extends BallPen{ public PenCore getPenCore(){ return new BlackPenCore(); } }
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(\ ballPen=new BlackBallPen(); penCore=ballPen.getPenCore();
penCore.writeWord(\ } }
———————————————————————————————————————
抽象工厂模式:
模式的结构中包括四种角色: 抽象产品(Prodcut)
具体产品(ConcreteProduct) 抽象工厂(AbstractFactory) 具体工厂(ConcreteFactory)
1.抽象产品(Product) : UpperClothes.java
public abstract class UpperClothes{
public abstract int getChestSize(); public abstract int getHeight(); public abstract String getName(); }
Trousers.java
public abstract class Trousers{
public abstract int getWaistSize(); public abstract int getHeight(); public abstract String getName(); }
2.具体产品(ConcreteProduct)_1: WesternUpperClothes.java public class WesternUpperClothes extends UpperClothes{ private int chestSize; private int height; private String name;
WesternUpperClothes(String name,int chestSize,int height){ this.name=name;
this.chestSize=chestSize; this.height=height; }
public int getChestSize(){ return chestSize; }
public int getHeight(){ return height; }
public String getName(){ return name; } }
2.具体产品(ConcreteProduct)_2: CowboyUpperClothes.java public class CowboyUpperClothes extends UpperClothes{ private int chestSize; private int height; private String name;
CowboyUpperClothes(String name,int chestSize,int height){ this.name=name;
this.chestSize=chestSize; this.height=height; }
public int getChestSize(){ return chestSize; }
public int getHeight(){
return height; }
public String getName(){ return name; } }
2.具体产品(ConcreteProduct)_3: WesternTrousers.java public class WesternTrousers extends Trousers{ private int waistSize; private int height; private String name;
WesternTrousers(String name,int waistSize,int height){ this.name=name;
this.waistSize=waistSize; this.height=height; }
public int getWaistSize(){ return waistSize; }
public int getHeight(){ return height; }
public String getName(){ return name; } }
2.具体产品(ConcreteProduct)_4: CowboyTrousers.java public class CowboyTrousers extends Trousers{ private int waistSize; private int height; private String name;
CowboyTrousers(String name,int waistSize,int height){ this.name=name;
this.waistSize=waistSize; this.height=height; }
public int getWaistSize(){ return waistSize; }
public int getHeight(){ return height; }
public String getName(){ return name;