欢迎光临散文网 会员登陆 & 注册

【设计模式】要点2

2023-05-11 19:58 作者:月笠丶  | 我要投稿

组合


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)


总结:

1)#protected受保护的,经常出现在主类第一行

2)List类无前缀,不出现void,abstract

3)List<>后接具体对象(小写例如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)


总结:

1)返回值为字符串,优先考虑String方法,对应上下午找具体

2)主类第一行经常出现主类 具体对象,例如 Beverage beverage

3)装饰器模式存在 具体对象=new 子类(具体对象)


16下

1)ticket.printInvoice() //非空则打印

2)super.printInvoice() //打印父类

3)super.printInvoice()

4)ticket=new HeadDecorator(new FootDecorator(t)) //套用

5)ticket=new HeadDecorator(new FootDecorator(null))


总结:

1)super()调用父类方法



享元


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()


总结:

1)子类多态,调用父类

2)具体对象.方法,例如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()


总结:

1)一个类下面的第一行该类名 对象,为定义对象

例如:Light light

2)Command[] onCommands = new Command[7]

可推onCommands[int]为具体对象,后面可以有.方法



观察者


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)


总结:

1)调用当前对象不具体时,写对象.方法(this)

2)根据功能为生成、新建,则用注册、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)



状态


11下

1)State soldOutState,noQuarterState,hasQuarterState,soldState,state

2)tissueMachine.setState(tissueMachine.getHasQuarterState())

3)~(tissueMachine.getNoQuarterState()) //tissue纸巾

4)~(tissueMachine.getNoQUarterState())

5)~(tissueMachine.getSoldOutState())


总结:

1)状态类名State

2)具体哪种状态根据上下文



策略


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()


总结:

1)调用子类名加()


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)


总结:

1)对象 = new 子类名()

2)get为获取 return 对象.方法 返回内容


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)


【设计模式】要点2的评论 (共 条)

分享到微博请遵守国家法律