昨天学习设计模式,其中有一个桥接模式让我深刻;
今天中午有复盘一下;
首先说下复杂度守恒定律,这一观点主要被应用在交互设计领域。我们不得不面对的问题是,该由谁来为这一固有的复杂度埋单。打个比方,应该由软件开发工程师花费额外的时间来使软件变得更加简单好用,还是应该让用户自己去解决软件使用中可能存在的问题?
复杂度守恒定律由Larry Tesler于1984年提出,也称泰斯勒定律(Tesler’s Law)。复杂度守恒定律(Law of conservation of complexity)由Larry Tesler于1984年提出,也称泰斯勒定律(Tesler’s Law)。
根据复杂度守恒定律,每个应用程序都具有其内在的、无法简化的复杂度。无论在产品开发环节还是在用户与产品的交互环节,这一固有的复杂度都无法依照我们的意愿去除,只能设法调整、平衡。
“桥接模式?,那是个啥” 心中突然蹦出这么一个想法。我心血来潮,去搜索
再去菜鸟教程看看
有一个图形的案列
这时候心里念着”首先有一个图形的基类,然后开始继承走起 红色的圆形、 红色的矩形、 蓝色的圆形、蓝色的矩形。“ 没毛病,一个抽象类,四个实现类,搞定
代码写完,测一手。画出类图
@Test
void shape(){
Shape blueCircle = new BlueCircle();
Shape blueRectangle = new BlueRectangle();
Shape redCircle = new RedCircle();
Shape redRectangle = new RedRectangle();
blueCircle.create();
blueRectangle.create();
redCircle.create();
redRectangle.create();
}
结果
蓝色の圆形
蓝色の长方形
红色の圆形
红色の长方形
感觉还可以,如果再加一种形状呢?
再加两个类不就行了? RedTriangle、BlueTriangle,
也还行,如果再这基础上再加一种绿颜色呢
再加三个类 GreenCircle、 GreenRectangle、GreenTriangle”
再加一个椭圆呢
这样就造成类爆炸了
UML中的聚合组合!
所以再仔细想想就可以优化代码
这个就是组合和聚合的意思,同时他们与主体之间的关联关系的表达