常见设计模式代码二

四 代理模式

类图:



代码:

抽象方法:
public abstract class AbstractObject {

public abstract void option();
}

具体实现:
public class RealObject extends AbstractObject {

@Override
public void option() {
System.out.println("real method...");
}
}

代理:
public class ProxyObject extends AbstractObject {

private RealObject realObject=new RealObject();
@Override
public void option() {

System.out.println("执行任务前 检查....");
realObject.option();
}
}

五 观察者模式

观察者模式类图 :



观察者操作抽象
public interface Observer {

public void update();
}

观察者A B

public class ObserverA implements Observer{
@Override
public void update() {
System.out.println("ObserverA 执行操作");
}
}

public class ObserverB implements Observer {
@Override
public void update() {
System.out.println("ObserverB 执行操作");
}
}

目标操作抽象:
public interface Subject {

public void option();
}

目标更新操作:
public class MySubject implements Subject{
@Override
public void option() {
System.out.println("目标对象执行操作通知观察者.....");
}
}

通知观察者:
public abstract class AbstractSubject implements Subject {

private Vector<Observer> observers = new Vector<Observer>();

public void addObserver(Observer observer) {

observers.add(observer);
}

public void delObserver(Observer observer) {

observers.remove(observer);
}

public void notifyObservers() {

for (Observer observer : observers) {

observer.update();
}
}
}

客户端调用:

AbstractSubject subject = new MySubject();
subject.add(new ObserverA());
subject.add(new ObserverB());
subject.operation();

六 策略模式

策略模式类图



策略模式代码

抽象策略
public interface MemberStrategy {

public double calcPrice(double booksPrice);
}
普通会员:
public class CommonVip implements MemberStrategy{
@Override
public double calcPrice(double booksPrice) {
System.out.println("普通会员....");
return booksPrice*0.9;
}
}
高级会员:
public class AdvancedVip implements MemberStrategy {
@Override
public double calcPrice(double booksPrice) {
System.out.println("高级会员...");
return booksPrice*0.8;
}
}

计算价格类:

public class Price {

private MemberStrategy memberStrategy;

public Price(MemberStrategy memberStrategy) {
this.memberStrategy = memberStrategy;
}

public double quote(double bookPrice) {

return memberStrategy.calcPrice(bookPrice);
}
}


转载于:https://www.cnblogs.com/xiaoxiannvBlog/p/9427788.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值