【設(shè)計(jì)模式】要點(diǎn)2
組合
21上
1)protected String name;
2)public abstract boolean addMenuElement(MenuComponent element)
3)public abstract List<MenuComponent>getElement()
4)private list<MenuComponent>elementList
5)mainMenu.addMenuElement(subMenu)
總結(jié):
1)#protected受保護(hù)的,經(jīng)常出現(xiàn)在主類第一行
2)List類無前綴,不出現(xiàn)void,abstract
3)List<>后接具體對(duì)象(小寫例如elementList)
裝飾器
12上
1)abstract class Beverage
2)public String getDescription(){
return description;}
3)public abstract int cost():
4)Beverage beverage
5)beverage=new Mocha(beverage)
6)beverage=new Whip(beverage)
總結(jié):
1)返回值為字符串,優(yōu)先考慮String方法,對(duì)應(yīng)上下午找具體
2)主類第一行經(jīng)常出現(xiàn)主類 具體對(duì)象,例如 Beverage beverage
3)裝飾器模式存在 具體對(duì)象=new 子類(具體對(duì)象)
16下
1)ticket.printInvoice() //非空則打印
2)super.printInvoice() //打印父類
3)super.printInvoice()
4)ticket=new HeadDecorator(new FootDecorator(t)) //套用
5)ticket=new HeadDecorator(new FootDecorator(null))
總結(jié):
1)super()調(diào)用父類方法
享元
21下
1)public abstract void draw()
2)private static final ArrayList<Piece>m_arrayPiece=new ArrayList
3)Piece piece=null
4)piece.draw()
5)piece.draw()
總結(jié):
1)子類多態(tài),調(diào)用父類
2)具體對(duì)象.方法,例如piece.draw()

行為型:
命令
14下
1)interface Command
2)public void execute(){
light.on();}
3)light.off()
4)onCommands[slot]
5)offCommands[slot]
6)onCommands[slot].execute()
7)offCommands[slot].execute()
總結(jié):
1)一個(gè)類下面的第一行該類名 對(duì)象,為定義對(duì)象
例如:Light light
2)Command[] onCommands = new Command[7]
可推onCommands[int]為具體對(duì)象,后面可以有.方法
觀察者
14上
1)class EnvironmentData implements Subject
2)observer.update(temperature,humidity,cleanness)
3)public void measurementsChanged(){
notifyObservers();}
4)measurementsChanged()
5)class CurrentConditionDisplay implements Observer
6)envData.registerObserver(this)
總結(jié):
1)調(diào)用當(dāng)前對(duì)象不具體時(shí),寫對(duì)象.方法(this)
2)根據(jù)功能為生成、新建,則用注冊、add、attach
19下
1)public void update()
2)private List<Observer>myObs
3)for(Observer obs:this myObs){
obs.update();}
4)public DocExplorer(String name,Subject subject)
5)sub.Attach(this)
狀態(tài)
11下
1)State soldOutState,noQuarterState,hasQuarterState,soldState,state
2)tissueMachine.setState(tissueMachine.getHasQuarterState())
3)~(tissueMachine.getNoQuarterState()) //tissue紙巾
4)~(tissueMachine.getNoQUarterState())
5)~(tissueMachine.getSoldOutState())
總結(jié):
1)狀態(tài)類名State
2)具體哪種狀態(tài)根據(jù)上下文
策略
10下
1)protected FlyBehavior flybehavior
2)protected TakeOffBehavior takeoffbehavior
3)public void fly(){
flybehavior.fly();}
4)public void takeoff{
takeoffbehavior.takeoff():}
5)class Helicoper extends AirCraft
6)flyBehavior = new SubSonicFly()
7)takeOffBehavior = new VerticalTakeOff()
總結(jié):
1)調(diào)用子類名加()
15下
1)public double accept Cash(double money)
2)cs = new CashNormal()
3)cs = new CashDiscount(0.8)
4)cs = new CashReturn(300,100)
5)return cs.acceptCash(money)
總結(jié):
1)對(duì)象 = new 子類名()
2)get為獲取 return 對(duì)象.方法 返回內(nèi)容
19下
1)public void step()
2)protected BrakeBehavior wheel //brake剎車
3)public void brake(){
wheel.stop();}
4)wheel = behavior
5)car1.brake()
訪問者
15上
1)public void visit(Book p_book)
2)public void visit(Article p_article)
3)public void accept(LibraryVisitor visitor)
4)visitor.visit(this)
5)visitor.visit(this)