概述
1.代理模式
为主要的功能增加旁支末节的功能
public interface OperDb {
void insert();
void query();
void delete();
void update();
}
class OperDbImpl implements OperDb{
@Override
public void insert() {
System.out.println("-----insert-------");
}
@Override
public void query() {
System.out.println("-----query-------");
}
@Override
public void delete() {
System.out.println("-----delete-------");
}
@Override
public void update() {
System.out.println("-----update-------");
}
}
class OperDbProxyForLog implements OperDb{
private OperDb operDb;
public OperDbProxyForLog(OperDb operDb){
this.operDb = operDb;
}
@Override
public void insert() {
System.out.println("-----insert log-------");
operDb.insert();
}
@Override
public void query() {
System.out.println("-----query log-------");
operDb.insert();
}
@Override
public void delete() {
System.out.println("-----delete log-------");
operDb.insert();
}
@Override
public void update() {
System.out.println("-----update log-------");
operDb.insert();
}
public static void main(String[] args) {
OperDb operDb = new OperDbProxyForLog(new OperDbImpl());
operDb.insert();
operDb.delete();
}
}
2.装饰者模式
为主要的功能增加主要功能
import java.math.BigDecimal;
public abstract class Drink {
String desc = "unknow drink";
public String getDesc() {
return desc;
}
public abstract BigDecimal cast();
}
class Coffee extends Drink{
Coffee(){
desc = "coffee";
}
@Override
public BigDecimal cast() {
return new BigDecimal("3.00");
}
}
abstract class Seasoning extends Drink{
public abstract String getDesc();
}
class Sugar extends Seasoning{
private Drink drink;
Sugar(Drink drink){
this.drink = drink;
}
@Override
public BigDecimal cast() {
return drink.cast().add(new BigDecimal("0.23"));
}
@Override
public String getDesc() {
return drink.getDesc()+ ".sugar";
}
public static void main(String[] args) {
Drink drink = new Sugar(new Coffee());
System.out.println(drink.cast());
System.out.println(drink.getDesc());
}
}
二者的差别:
1)相同点:都是为功能做拓展,都能保证原始类不做修改的前提下做功能拓展。(满足设计模式的开闭原则)
2)不同点:代理模式增加的是不重要的功能,装饰者模式增加的是主要功能
最后
以上就是悲凉西装为你收集整理的设计模式----装饰者模式与代理模式的全部内容,希望文章能够帮你解决设计模式----装饰者模式与代理模式所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复